gpt4 book ai didi

error-handling - 为什么 Rust 的 usize 到 u128 转换被认为是失败的?

转载 作者:行者123 更新时间:2023-12-03 07:38:41 24 4
gpt4 key购买 nike

看一看:

use std::convert::{From, TryFrom};

fn main() {
let size: usize = 42;
let good: u128 = u128::try_from(size).unwrap(); // works fine
let bad: u128 = u128::from(size); // doesn't compile!
}
据我所知, usize是一个整数类型并且它们永远不会大于 128 位。所以,我看不出 usize -> u128转换可能会失败。那么,为什么不 u128实现 From<usize> ?
更新 : Rust 的 documentation说:

From T for U implies Into U for T


虽然 usize -> u128看起来不错, u128 -> usize没有。好的,但为什么不是 Into<u128>usize 实现反而?

最佳答案

Though usize -> u128 seems fine, u128 -> usize doesn't. OK, but why isn't Into implemented for usize instead?


因为就 Rust 而言,虽然保证 usize 始终至少为 16 位,但并不保证始终最多为 64 位。
它似乎不太可能有用,但从技术上讲,没有什么可以排除 256 位指针,而且由于保证 usize 是指针大小的,它会使 usize -> u128转换失败。

关于error-handling - 为什么 Rust 的 usize 到 u128 转换被认为是失败的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62832438/

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