这个项目用于记录《深入浅出Rust》的勘误以及读者反馈。深入浅出Rust读者交流群 497531779。
- 
P8 代码 use std::prelude::*;应改为use std::prelude::v1::*;
- 
P18 第三块代码中 let var6 = 12usize; // i6变量是usize类型 let var7 = 0x_ff_u8; // i7变量是u8类型 注释应该分别为 var6变量和var7变量:let var6 = 12usize; // var6变量是usize类型 let var7 = 0x_ff_u8; // var7变量是u8类型 
- 
P27 tuple、struct、struct tuple 起的作用都是把几个不同类型的成员打包组合成一个类型 应改为 tuple、struct、tuple struct 起的作用都是把几个不同类型的成员打包组合成一个类型 
- 
P39 fn func(i: i32) -> bool函数函数签名和函数体类型不匹配,函数参数名字与内部变量名字也不匹配。可以修正为以下代码:fn func(i: i32) -> std::cmp::Ordering { if i < 0 { std::cmp::Ordering::Less } else if i > 0 { std::cmp::Ordering::Greater } else { std::cmp::Ordering::Equal } } 
- 
P41 最下面那段代码, println!("{}", v);应该改为println!("{:?}", v);:fn main() { let v = loop{}; println!("{:?}", v); } 
- 
P48 这个函数的返回类型可以是任何一个满足 Termination trait 约束的类型,其中 ()、bool、Result 都是满足这个约束的应改为 这个函数的返回类型可以是任何一个满足 Termination trait 约束的类型,比如 ()、Result<(), E>等类型就是满足这个约束的
- 
P89 倒数第二段代码, while let应该改为if let:if let A(x) | B(x) = expr { do_something(x); } 
- 
P159 代码中的 vdata.set(10);应改为data.set(10);
- 
P161 绝对不可能让用户有机会通过 &Cetl<T>获得&T或者&mut T其中, &Cetl<T>应改为&Cell<T>
- 
P187 ……避免了Arc的运行效率损失, 是非常有用的scoped函数与spawn函数的区别就在于…… 应改为 ……避免了Arc的运行效率损失, 是非常有用的。scoped函数与spawn函数的区别就在于…… 本页最后一句,只要用户有可能在不使用 unsafe 构造出内存安全 应改为 只要用户有可能在不使用 unsafe 时构造出内存不安全 
- 
P210 究竟准是准的子类型 应改为 究竟谁是谁的子类型 
- 
P211 类型 fn(T)->U对于泛型参数T具备协变关系应改为 类型 fn(T)->U对于泛型参数T具备逆变关系类型 fn(T)->U对于泛型参数U具备逆变关系应改为 类型 fn(T)->U对于泛型参数T具备协变关系
- 
P212 PhantomData<'aT>应该改为PhantomData<&'a T>
- 
P257 其次尝试选择 fn call_mut(&self, args:Args)应改为 其次尝试选择 fn call_mut(&mut self, args:Args)
- 
P279 图片内箭头指向位置错乱了 
- 
P298 由于Rust设计的改变,跟 PinMut有关的都需要改一下。具体包括PinMut<'a, T>应改为Pin<P>self: PinMut<Self>应改为self: Pin<&mut Self>PinMut<XXGenerator>应改为Pin<&mut XXGenerator>PinMut应改为Pin
- 
P299 最上面的代码块中 fn poll(self: PinMut<Self>, cx: &mut Context) -> Poll<Self::Output> 应改为: fn poll(self: Pin<&mut Self>, lw: &LocalWaker) -> Poll<Self::Output> 倒数第六行, PinMut<Self>应改为Pin<&mut Self>倒数第五行, PinMut应改为Pin
- 
P300 第2行和第3行, PinMut<T>改为Pin<&mut T>。