# 页码与行数 - 第73页 - 薛定谔的类型附近 --- 对于 ``` trait Foo: Sized{ fn some(&self); } ``` 文中试图解释为什么不能对trait添加Self:Sized限定: ``` 把trait当做对象使用时, 内部默认为Unsize类型, 将其置于编译期可确定大小的胖指针后, 以供动态调用. ... 如果给trait加上Self:Sized限定, 动态调用trait对象的过程中, 如果碰到Unsize 类型,调用方法将引发段错误. ``` 对于trait Foo, 应该对所有实现Foo的类型都要求为Sized. 所以在后面应该不会有Unsize 的类型. https://github.com/rust-lang/rfcs/blob/master/text/0255-object-safety.md https://github.com/rust-lang/rfcs/blob/master/text/0546-Self-not-sized-by-default.md 根据这两个rfc, 貌似只是说为了保证`trait object必须实现当前trait`所以把Sized限定去掉了. 所以书中那部分描述可能不太完善.
页码与行数
对于
文中试图解释为什么不能对trait添加Self:Sized限定:
对于trait Foo, 应该对所有实现Foo的类型都要求为Sized. 所以在后面应该不会有Unsize 的类型.
https://github.com/rust-lang/rfcs/blob/master/text/0255-object-safety.md
https://github.com/rust-lang/rfcs/blob/master/text/0546-Self-not-sized-by-default.md
根据这两个rfc, 貌似只是说为了保证
trait object必须实现当前trait所以把Sized限定去掉了.所以书中那部分描述可能不太完善.