рд░рд╕реНрдЯ рдЯреАрдо рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг, 1.41.0 рдХреА рд░рд┐рд▓реАрдЬ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╕рдиреНрди рд╣реИред рдЬрдВрдЧ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдХреБрд╢рд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд╕реНрдЯ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ rustup, рддреЛ рд╕рдВрд╕реНрдХрд░рдг 1.41.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
rustup update stable
рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ rustup, рддреЛ рдЖрдк рдЗрд╕реЗ рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд╕рд╛рде рд╣реА GHHub рдкрд░ рд╡рд┐рд╕реНрддреГрдд рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред
рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг 1.41.0 рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ
рд░рд╕реНрдЯ 1.41.0 рдХреЗ рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдореЗрдВ рдвреАрд▓ рд╣реИ, рд╕реБрдзрд╛рд░ cargo install, рдирдИ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдХреЗ Cargo.lockрд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рд╣реИ git, рдФрд░ Box<T>рдПрдлрдПрдлрдЖрдИ рд╕реЗ рдЬреБрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирдИ рдЧрд╛рд░рдВрдЯреА ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯ рджреЗрдЦреЗрдВ ред
рд▓рдХреНрд╖рдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛
, , Rust (orphan rule). , , , , .. . , .
Rust 1.41.0 , . , BetterVec<T>, Vec<T> . :
impl<T> From<BetterVec<T>> for Vec<T> {
}
тАж :
impl<T> ForeignTrait<LocalType> for ForeignType<T> {
}
Rust 1.40.0 impl , From Vec , . , newtype, .
From Vec , ( From) . , Rust 1.41.0 impl.
RFC.
cargo install
cargo install . CLI-, Rust.
Rust 1.41.0, cargo install , . --force, .
, Cargo Cargo.lock, . , .
Rust 1.41.0 , . lock-, . , , PR, .
Box<T> FFI
Rust 1.41.0, , Box<T>, T: Sized, ABI C (T*). , extern "C" Rust C, Rust Box<T> - T, T* C. , C :
struct Foo* foo_new(void);
void foo_delete(struct Foo*);
тАж Rust :
#[repr(C)]
pub struct Foo;
#[no_mangle]
pub extern "C" fn foo_new() -> Box<Foo> {
Box::new(Foo)
}
#[no_mangle]
pub extern "C" fn foo_delete(_: Option<Box<Foo>>) {}
, , Box<T> T* ABI, Box<T> -null, . , тАФ Box', .
: Box<T> , C, Rust. C. Box<T>, C T* .
, Box<T>.
Rust 1.41.0, :
Rust 1.41.0 32- Apple, i686-apple-darwin. Rust 1.42.0 .
.
, Cargo Clippy . MIR, : "Inside Rust".
1.41.0
, Rust 1.41.0. , !
Rust - .
andreevlex, blandger, funkill, P0lunin nlinker.