借用ポインター (壊れた) に関するチュートリアルから、少し変更しました。
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
(特性ストレージが異なります: 予期された & が見つかりました @)
これはコンパイラのバグですか? または、借用したポインターは特性に許可されていませんか?
答えが後者なら、それはなぜですか?