pas*_*ugh 4 size error-handling unsigned type-conversion rust
看一看:
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!
}
Run Code Online (Sandbox Code Playgroud)
据我所知,usize是一个整数类型,它们永远不会超过 128 位。因此,我认为usize -> u128转换不会失败。那么,为什么不u128实现From<usize>呢?
更新:Rust 的文档说:
从 T for U 隐含 In to U for T
虽然usize -> u128看起来不错,u128 -> usize但不是。好的,但为什么没有Into<u128>实现usize呢?
虽然 usize -> u128 看起来不错,但 u128 -> usize 不行。好的,但是为什么不为 usize 实现 Into 呢?
因为就 Rust 而言,虽然保证 usize 始终至少为 16 位,但并不保证始终最多为64 位。
它似乎不太可能有用,但从技术上讲,没有什么可以排除 256 位指针,而且由于保证 usize 是指针大小的,它会使usize -> u128转换失败。
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |