| Crates.io | input_output |
| lib.rs | input_output |
| version | 0.1.2 |
| created_at | 2025-07-09 10:01:48.888209+00 |
| updated_at | 2025-07-09 10:16:50.532931+00 |
| description | 一个用于处理大数输入输出的 Rust 库 |
| homepage | |
| repository | https://github.com/rooct/input_output-rs.git |
| max_upload_size | |
| id | 1744639 |
| size | 35,104 |
一个用于处理代币交易对计算的 Rust 库,支持高精度数值计算和自定义精度设置。
将以下依赖添加到你的 Cargo.toml 文件中:
[dependencies]
input_output = "0.1.2"
use input_output::*;
// 创建价格对实例
let price = PairRate::new(
("TOKEN_A".to_string(), "TOKEN_B".to_string()),
(10, 19), // 汇率 1.9(19/10)
(24, 24), // 两个代币都使用24位精度
).unwrap();
// 计算输出金额(输入 1 个 TOKEN_A)
let input_amount = 1_000_000_000_000_000_000_000_000u128; // 1 token with 24 decimals
let output = PairRate::calculate_output_amount(&price, input_amount).unwrap();
println!("Output amount: {}", output);
// 获取人类可读的价格
let human_readable = price.get_human_readable_rate(); // 1.9
// 创建不同精度的价格对
let price = PairRate::new(
("TOKEN_A".to_string(), "TOKEN_B".to_string()),
(1, 1), // 1:1 汇率
(18, 6), // TOKEN_A 使用18位精度,TOKEN_B 使用6位精度
).unwrap();
// 输入 1 个 TOKEN_A(18位精度)
let input_amount = 1_000_000_000_000_000_000u128;
let output = PairRate::calculate_output_amount(&price, input_amount).unwrap();
MAX_DECIMALS: 38 - 支持的最大精度MAX_DECIMAL_DIFF: 32 - 支持的最大精度差MAX_RATE: u128::MAX / 2 - 最大安全汇率详细的 API 文档可以在 docs.rs 查看。
代币交易对的价格信息结构体:
pub struct PairRate {
pub token_pair: (String, String), // (输入代币, 输出代币)
pub rate: (u128, u128), // (输入比率, 输出比率)
pub decimals: (u8, u8), // (输入精度, 输出精度)
}
PairRate::new() - 创建新的价格对实例calculate_output_amount() - 计算输出金额calculate_input_amount() - 计算所需输入金额get_price_rate() - 获取精确价格率get_human_readable_rate() - 获取人类可读的价格率库中的所有计算函数都返回 Result 类型,可能的错误包括:
此库需要 Rust 1.56.0 或更高版本。
此项目采用 MIT/Apache-2.0 双重许可。
欢迎提交 Issues 和 Pull Requests!
PairRate::new() 构造函数