tutorial on borrowed pointers (टूट) से, थोड़ा संशोधित:क्या मैं जंग में साझा विशेषता के लिए एक सूचक ले सकता हूं?
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) कह रही:
error: mismatched types: expected
&TPoint
but found@TPoint
(trait storage differs: expected & but found @)
इस संकलक में एक बग है? या उधारकर्ता पॉइंटर्स को लक्षणों के लिए अनुमति नहीं है?
यदि उत्तर बाद वाला है, तो वह क्यों है?
मैं आपके द्वारा रिपोर्ट किए गए त्रुटि संदेश से थोड़ा आश्चर्यचकित हूं, क्योंकि आप कोड में @TPoint और TPoint के साथ काम कर रहे हैं, लेकिन त्रुटि संदेश ~ TPoint और TPoint के साथ समस्या की रिपोर्ट करता है। (मुझे एक ट्रांसक्रिप्शन त्रुटि पर संदेह है जिसे आप सही करना चाहते हैं।) – pnkfelix
@pnkfelix: वास्तव में, सही किया गया। वही ~ ~ टीपीओटी' के साथ होता है लेकिन संदेश कोड के अनुरूप नहीं था। – rodrigo