File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -123,7 +123,7 @@ SV39 多级页表的硬件机制
123123
124124 需要注意的是,当我们使用 ``From `` Trait 的 ``from `` 方法来构造一个转换后类型的实例的时候,``from `` 的参数已经指明了转换前的类型,因而 Rust 编译器知道该使用哪个实现;而使用 ``Into `` Trait 的 ``into `` 方法来将当前类型转化为另一种类型的时候,它并没有参数,因而函数签名中并没有指出要转化为哪一个类型,则我们必须在其它地方 *显式 * 指出目标类型。比如,当我们要将 ``u.into() `` 绑定到一个新变量 ``t `` 的时候,必须通过 ``let t: T `` 显式声明 ``t `` 的类型;又或是将 ``u.into() `` 的结果作为参数传给某一个函数,那么由于这个函数的函数签名中指出了传入位置的参数的类型,所以 Rust 编译器也就明确知道转换的类型。
125125
126- 请注意,解引用 ``Deref `` Trait 是 Rust 编译器唯一允许的一种隐式类型转换,而对于其他的类型转换 ,我们必须手动调用类型转化方法或者是显式给出转换前后的类型。这体现了 Rust 的类型安全特性,在 C/C++ 中并不是如此,比如两个不同的整数/浮点数类型进行二元运算的时候,编译器经常要先进行隐式类型转换使两个操作数类型相同,而后再进行运算,导致了很多数值溢出或精度损失问题。Rust 不会进行这种隐式类型转换,它会在编译期直接报错,提示两个操作数类型不匹配。
126+ 请注意,解引用 ``Deref `` Trait 是 Rust 编译器允许的一种隐式类型转换,而对于大部分类型转换 ,我们必须手动调用类型转化方法或者是显式给出转换前后的类型。这体现了 Rust 的类型安全特性,在 C/C++ 中并不是如此,比如两个不同的整数/浮点数类型进行二元运算的时候,编译器经常要先进行隐式类型转换使两个操作数类型相同,而后再进行运算,导致了很多数值溢出或精度损失问题。Rust 不会进行这种隐式类型转换,它会在编译期直接报错,提示两个操作数类型不匹配。
127127
128128其次,地址和页号之间可以相互转换。我们这里仍以物理地址和物理页号之间的转换为例:
129129
You can’t perform that action at this time.
0 commit comments