Обновление:
Когда ваша версия rustc больше 1.26.0 , реализована черта From *, и вы можете легко использовать into
соответственно from
.
Более низкая версия, чем та, смотри ниже.
Как примечание: «Самый эффективный способ» очень субъективен.
Я бы использовал методы low64()
и high64()
для создания ржавчины 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);
}
( детская площадка )
Поскольку вы не можете сравнивать оба напрямую, я использовал функцию to_string()
, чтобы преобразовать их в строку и сравнить их.