Нужно знать о диапазоне представляемых значений для различных числовых типов в Rust. В этом конкретном случае значение превышает пределы u64
, но тип u128
вмещает это значение. Следующий код выводит то же значение, что и в примере на Python:
fn main() {
let my_string = "100000000000000000000000".to_string(); // `parse()` works with `&str` and `String`!
let my_int = my_string.parse::<u128>().unwrap();
let my_hex = format!("{:X}", my_int);
println!("{}", my_hex);
}
Проверено на Rust Playground :
152D02C7E14AF6800000
В общем случае требуется явное использование арифметики произвольной точности. Несколько предложений от Каков наилучший ящик для арифметики произвольной точности в Rust? на Reddit:
num_bigint
работает на стабильной и не имеет небезопасного кода.
ramp
использует небезопасные и не работает на стабильном Rust, но это быстрее.
rust-gmp
и rug
связаны с современной реализацией bigint в C (GMP). Они самые быстрые и имеют большинство функций. Вы, вероятно, хотите использовать один из них.