Rust 取消引用强制
例子
给定两种类型TandU,&T将强制(隐式转换)为&U当且仅当T实现Deref
这允许我们做这样的事情:
fn foo(a: &[i32]) { //代码 } fn bar(s: &str) { //代码 } let v = vec![1, 2, 3]; foo(&v); // &Veccoerces into &[i32] because Vec impls Deref let s = "Hello world".to_string(); let rc = Rc::new(s); // This works because Rc impls Deref ∴ &Rc coerces into // &String which coerces into &str. This happens as much as needed at compile time. bar(&rc);