从关于借用指针(损坏)的教程中,稍作修改:
struct Point {x: float, y: float}
fn compute(p1 : &Point) {}
fn main() {
let shared_box : @Point = @Point {x: 5.0, y: 1.0};
compute(shared_box);
}
一切都很好,因为该功能会自动借用共享框。
但是对一个特征做同样的事情:
struct Point {x: float, y: float}
trait TPoint {}
impl TPoint for Point {}
fn compute(p1 : &TPoint) {}
fn main() {
let shared_box : @TPoint = @Point {x: 5.0, y: 1.0} as @TPoint;
compute(shared_box);
// ^~~~~~~ The error is here
}
它失败了,(编译器版本 0.6)说:
错误:不匹配的类型:预期
&TPoint
但找到@TPoint
(特征存储不同:预期&但找到@)
这是编译器中的错误吗?或者特征不允许借用指针?
如果答案是后者,那为什么呢?