Rust: لا يمكن إجراء إسقاط لنوع عام مع ربط سمة ذات رتبة أعلى

تم إنشاؤها على ١٧ أغسطس ٢٠١٥  ·  3تعليقات  ·  مصدر: rust-lang/rust

إذا حاولت تجميع هذا البرنامج:

pub trait Foo<'a> {}

pub struct Bar<T> where T: for<'a> Foo<'a> {
    _phantom: ::std::marker::PhantomData<T>,
}

impl <T> Drop for Bar<T> where T: for<'a> Foo<'a> {
    fn drop(&mut self) {}
}

fn main() {}

تلقيت رسالة الخطأ الزائفة هذه بوضوح:

$ rustc test.rs
test.rs:7:1: 9:2 error: The requirement `for<'a> T : Foo<'a>` is added only by the Drop impl. [E0367]
test.rs:7 impl <T> Drop for Bar<T> where T: for<'a> Foo<'a> {
test.rs:8     fn drop(&mut self) {}
test.rs:9 }
test.rs:7:1: 9:2 help: run `rustc --explain E0367` to see a detailed explanation
test.rs:3:1: 5:2 note: The same requirement must be part of the struct/enum definition
test.rs:3 pub struct Bar<T> where T: for<'a> Foo<'a> {
test.rs:4     _phantom: ::std::marker::PhantomData<T>,
test.rs:5 }

حاولت العبث بها للحصول على فحص للطباعة ، لكن لم ينجح شيء.

$ rustc --version --verbose
rustc 1.4.0-nightly (e822a18ae 2015-08-16)
binary: rustc
commit-hash: e822a18ae7d55cefc332c6598a607cef0554ec77
commit-date: 2015-08-16
host: x86_64-apple-darwin
release: 1.4.0-nightly
A-destructors A-traits A-typesystem C-bug T-compiler

التعليق الأكثر فائدة

نفس الشيء هنا ، لقد عثرت للتو على هذه المسألة. كيف يتم ذلك؟ هذه القضية موجودة منذ 3 سنوات.

ال 3 كومينتر

ccpnkfelix

نفس الشيء هنا ، لقد عثرت للتو على هذه المسألة. كيف يتم ذلك؟ هذه القضية موجودة منذ 3 سنوات.

يؤثر عليّ أيضًا. صدم؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات