gpt4 book ai didi

rust - 在 Rust 中的 extprim::u128::u128 和原始 u128 之间转换?

转载 作者:行者123 更新时间:2023-11-29 08:13:50 24 4
gpt4 key购买 nike

我正在使用一个使用 extprim 的旧 Rust 模块 crate 提供 u128类型。

我正在尝试将它与一个使用 Rust 原语 u128 的新 crate 一起使用类型(自 Rust 1.26 起可用)。

在这两种类型之间来回转换的有效方法是什么?

最佳答案

更新:

当你的 rustc 版本大于 1.26.0From trait is implemented并且您可以轻松地分别使用 into from

对于低于该版本的版本,请参见下文。


请注意:“最有效的方法” 是非常主观的。

我会使用 low64()high64() 方法生成 rust u128

extern crate extprim; // 1.6.0

use extprim::u128;

fn main() {
let number = u128::u128::from_parts(6_692_605_942, 14_083_847_773_837_265_618);
println!("{:?}", number);

// going forth
let real_number = u128::from(number.high64()) << 64 | u128::from(number.low64());
println!("{:?}", number);
assert_eq!(number.to_string(), real_number.to_string());

// and back
let old_number = u128::u128::from_parts((real_number >> 64) as u64, (real_number) as u64);
assert_eq!(number, old_number);
}

( playground )

因为不能直接比较两者,所以我使用 to_string() 函数将它们转换为字符串并进行比较。

关于rust - 在 Rust 中的 extprim::u128::u128 和原始 u128 之间转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53207980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com