Rust: рдПрдХ рдЙрдЪреНрдЪ-рд╢реНрд░реЗрдгреА рдХреЗ рдЯреНрд░реИрд╕ рдмрд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЕрдЧре░ 2015  ┬╖  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 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cc @pnkfelix

рдпрд╣рд╛рдБ рднреА, рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИред рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ 3 рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВред

рдореБрдЭреЗ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ред рдЯрдХрд░рд╛рдУрдЧреЗ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

wthrowe picture wthrowe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

modsec picture modsec  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

overvenus picture overvenus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lambda-fairy picture lambda-fairy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

behnam picture behnam  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ