рдЕрднреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬреЛ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд░рд╣реА рд╣реИ, рдЙрд╕рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреЛ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ 2015 рдореЗрдВ 1.0 рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ! рдЗрди рдкрд╛рдВрдЪ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЬрдВрдЧ рдмрд╣реБрдд рдмрджрд▓ рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдореБрджрд╛рдп рдХреЗ рд╕рднреА рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдпрд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд▓ рд╕реЗ рднрд╛рд╖рд╛ рд╕реНрдерд┐рд░ рд╣реЛ рдЬрд╛рдПрдЧреАред
рдпрд╛рдж рд░рдЦреЗрдВ рдЕрдЧрд░ рдХреЛрдИ рднреВрд▓ рдЧрдпрд╛: рдЬрдВрдЧ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп-рдкреНрд░рдпреЛрдЬрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдХреБрд╢рд▓ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рд╛рдзрди рд╣реИред рдЬрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЖрдкрдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдЖрдкрдХреЗ рдЕрдЧрд▓реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХред рдпрд╣ рднрд╛рд╖рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЦреБрд▓реЗ рдмрд╣реБрд╕рдВрдЦреНрдпрдХ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рд╕рдордп рдФрд░ рдЬреНрдЮрд╛рди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рд░реБрд╕реНрдд рдХреЛ рдЕрдм рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреАред
рд╕рдВрд╕реНрдХрд░рдг 1.0 рдХреЗ рдмрд╛рдж рд╕реЗ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡
2015
1.2 - рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди: рд░рд╕реНрдЯ рдХреЗ рд╣рд░ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рдВрдХрд▓рди рд╕рдордп рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕реЗ рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╖рдп рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдм рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдПрдХ рд╕рдордп рдХреА рдЫреЛрдЯреА рдЕрд╡рдзрд┐ рдереА рдЬрдм рд░рд╕реНрдЯ рдХреЗ рдкрд╛рд╕ рд╕рдорд╛рдирд╛рдВрддрд░ рдХреЛрдб рдкреАрдврд╝реА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдереАред
1.3 - рдж рд░рд╕реНрдЯреЛрдиреЛрдорд┐рдХреЙрди: рд╢рд╛рдирджрд╛рд░ рдкреБрд╕реНрддрдХ "рдж рд░рд╕реНрдЯреЛрдиреЛрдорд┐рдХреЙрди" рдХрд╛ рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг, рдПрдХ рдХрд┐рддрд╛рдм рдЬреЛ рд░рд╕реНрдЯ, рдЕрдирд╕реЗрдл рд░рд╕реНрдЯ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдЕрдВрдзреЗрд░реЗ рдкрдХреНрд╖ рдХреА рдкрдбрд╝рддрд╛рд▓ рдХрд░рддреА рд╣реИред рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реНрд░реЛрдд рдмрди рдЧрдпрд╛ рд╣реИ рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рд╕рдмрд╕реЗ рдХрдард┐рди рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╕реАрдЦрдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
1.4 - рд╡рд┐рдВрдбреЛрдЬ MSVC рд╕реНрддрд░ 1 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди: рд╕реНрддрд░ 1 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ Microsoft Visual C ++ рдЯреВрд▓рдХрд┐рдЯ (MSVC) рдХреЗ рд╕рд╛рде 64-рдмрд┐рдЯ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рд▓рд╛рдпрд╛ред 1.4 рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд░реБрд╕реНрдд рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдирдЧреЙрд╡ (рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЬреАрдПрдирдпреВ рдкрд░реНрдпрд╛рд╡рд░рдг рдкреЛрд░реНрдЯ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдерд╛ред рд╡рд┐рдВрдбреЛрдЬ рд╕рдорд░реНрдерди рдкрд╛рдВрдЪ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд░рд╕реНрдЯ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╡реГрджреНрдзрд┐ рдореЗрдВ рд╕реЗ рдПрдХ рдмрди рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, Microsoft рдиреЗ Rust WinRT API рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рдорд░реНрдерди рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреА! рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЕрдм рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред
1.5 тАФ Cargo Install: Rust cargo , , . Cargo , , crates.io!
2016
1.6 тАФ Libcore: libcore
тАФ , API, . libcore
Rust , Rust .
1.10 тАФ C ABI: cdylib
C-, Rust , ABI C. Rust тАФ Rust . , -.
1.12 тАФ Cargo Workspaces: Rust lock-. .
1.13 тАФ Try
: ?
"Try". . try!
, , Result
, ?
.
try!(try!(expression).method());
expression?.method()?;
1.14 тАФ Rustup 1.0: Rustup тАФ . Rust . , , , "". Linux, macOS, Windows .
2017
1.15 тАФ : , API . Rust serde
diesel
.
1.17 тАФ Rustbuild: make
Cargo. rust-lang/rust
.
1.20 тАФ : . 1.20 , , , . API, IP- .
2018
1.24 тАФ : 1.24, , . , , .
1.26 тАФ impl Trait
: impl Trait
API
.
1.28 тАФ : , Rust. API , . alloc
, , , , Vec
String
. , -, .
1.31 тАФ 2018 : 2018 1.0, Rust, . , , .
- (NLL): Rust, .
- : UX .
- : Rust .
- Rustfmt 1.0: , Rust.
- Clippy 1.0: Rust . Clippy , , .
- Rustfix: , , . , Rust,
cargo fix
, .
2019
1.34 тАФ : Rust , . Cargo git-. , , crates.io.
1.39 тАФ Async/Await: async
/await
Future
" " Rust. , .
2020
1.42 тАФ : , ..
() , .
, , Rust 1.0. , .
, . , , , , .
()
use std::io::Write;
fn trait_obj(w: &Write) {
generic(w);
}
fn generic<W: Write>(_w: &W) {}
1.2.0 Compiling error-messages v0.1.0 (file:///Users/usr/src/rust/error-messages)
src/lib.rs:6:5: 6:12 error: the trait `core::marker::Sized` is not implemented for the type `std::io::Write` [E0277]
src/lib.rs:6 generic(w);
^~~~~~~
src/lib.rs:6:5: 6:12 note: `std::io::Write` does not have a constant size known at compile-time
src/lib.rs:6 generic(w);
^~~~~~~
error: aborting due to previous error
Could not compile `error-messages`.
To learn more, run the command again with --verbose.

1.43.0 Compiling error-messages v0.1.0 (/Users/ep/src/rust/error-messages)
error[E0277]: the size for values of type `dyn std::io::Write` cannot be known at compilation time
--> src/lib.rs:6:13
|
6 | generic(w);
| ^ doesn't have a size known at compile-time
...
9 | fn generic<W: Write>(_w: &W) {}
| ------- - - help: consider relaxing the implicit `Sized` restriction: `+ ?Sized`
| |
| required by this bound in `generic`
|
= help: the trait `std::marker::Sized` is not implemented for `dyn std::io::Write`
= note: to learn more, visit <https://doc.rust-lang.org/book/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.
error: could not compile `error-messages`.
To learn more, run the command again with --verbose.

()
fn main() {
let s = "".to_owned();
println!("{:?}", s.find("".to_owned()));
}
1.2.0 Compiling error-messages v0.1.0 (file:///Users/ep/src/rust/error-messages)
src/lib.rs:3:24: 3:43 error: the trait `core::ops::FnMut<(char,)>` is not implemented for the type `collections::string::String` [E0277]
src/lib.rs:3 println!("{:?}", s.find("".to_owned()));
^~~~~~~~~~~~~~~~~~~
note: in expansion of format_args!
<std macros>:2:25: 2:56 note: expansion site
<std macros>:1:1: 2:62 note: in expansion of print!
<std macros>:3:1: 3:54 note: expansion site
<std macros>:1:1: 3:58 note: in expansion of println!
src/lib.rs:3:5: 3:45 note: expansion site
src/lib.rs:3:24: 3:43 error: the trait `core::ops::FnOnce<(char,)>` is not implemented for the type `collections::string::String` [E0277]
src/lib.rs:3 println!("{:?}", s.find("".to_owned()));
^~~~~~~~~~~~~~~~~~~
note: in expansion of format_args!
<std macros>:2:25: 2:56 note: expansion site
<std macros>:1:1: 2:62 note: in expansion of print!
<std macros>:3:1: 3:54 note: expansion site
<std macros>:1:1: 3:58 note: in expansion of println!
src/lib.rs:3:5: 3:45 note: expansion site
error: aborting due to 2 previous errors
Could not compile `error-messages`.
To learn more, run the command again with --verbose.

1.43.0 Compiling error-messages v0.1.0 (/Users/ep/src/rust/error-messages)
error[E0277]: expected a `std::ops::FnMut<(char,)>` closure, found `std::string::String`
--> src/lib.rs:3:29
|
3 | println!("{:?}", s.find("".to_owned()));
| ^^^^^^^^^^^^^
| |
| expected an implementor of trait `std::str::pattern::Pattern<'_>`
| help: consider borrowing here: `&"".to_owned()`
|
= note: the trait bound `std::string::String: std::str::pattern::Pattern<'_>` is not satisfied
= note: required because of the requirements on the impl of `std::str::pattern::Pattern<'_>` for `std::string::String`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.
error: could not compile `error-messages`.
To learn more, run the command again with --verbose.

( )
fn main() {
let mut x = 7;
let y = &mut x;
println!("{} {}", x, y);
}
1.2.0 Compiling error-messages v0.1.0 (file:///Users/ep/src/rust/error-messages)
src/lib.rs:5:23: 5:24 error: cannot borrow `x` as immutable because it is also borrowed as mutable
src/lib.rs:5 println!("{} {}", x, y);
^
note: in expansion of format_args!
<std macros>:2:25: 2:56 note: expansion site
<std macros>:1:1: 2:62 note: in expansion of print!
<std macros>:3:1: 3:54 note: expansion site
<std macros>:1:1: 3:58 note: in expansion of println!
src/lib.rs:5:5: 5:29 note: expansion site
src/lib.rs:3:18: 3:19 note: previous borrow of `x` occurs here; the mutable borrow prevents subsequent moves, borrows, or modification of `x` until the borrow ends
src/lib.rs:3 let y = &mut x;
^
src/lib.rs:6:2: 6:2 note: previous borrow ends here
src/lib.rs:1 fn main() {
src/lib.rs:2 let mut x = 7;
src/lib.rs:3 let y = &mut x;
src/lib.rs:4
src/lib.rs:5 println!("{} {}", x, y);
src/lib.rs:6 }
^
error: aborting due to previous error
Could not compile `error-messages`.
To learn more, run the command again with --verbose.

1.43.0 Compiling error-messages v0.1.0 (/Users/ep/src/rust/error-messages)
error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
--> src/lib.rs:5:23
|
3 | let y = &mut x;
| ------ mutable borrow occurs here
4 |
5 | println!("{} {}", x, y);
| ^ - mutable borrow later used here
| |
| immutable borrow occurs here
error: aborting due to previous error
For more information about this error, try `rustc --explain E0502`.
error: could not compile `error-messages`.
To learn more, run the command again with --verbose.

, . , :
rustdoc :
- ,
- ( JSON),
- "compile_fail, should_panic, allow_fail",
- .
тАФ Guillaume Gomez (rustdoc)
Rust IDE! , IntelliJ Rust,
RLS rust-analyzer ┬л ┬╗
. ┬л Rust┬╗
Vim/Emacs.
тАФ (IDEs and editors)
:
,
Rust ,
.
тАФ Daniel Egger (Embedded WG)
2018 ,
~ 40000 rust-lang/rust
-
.
, , ,
(, ,
). , ,
, PR . .
тАФ Mark Rousskov (Release)
3 Miri
,
.
Stacked Borrows,
Rust.
,
Miri, ,
Miri
, ,
Miri, , ,
.
тАФ Ralf Jung (Miri)
, ,
NLL. , ,
Rust, , ,
NLL.
, .
!
тАФ Niko Matsakis (Language)
, . Rust , Rust . , Rust.
- Rust ┬л ┬╗ Stack Overflow, , 1.0.
- 2,25 (1PB = 1000 ) , !
- 170 1,8 crates.io, .
- Rust 1.0 , , . , , Apple, Amazon, Dropbox, Facebook, Google Microsoft, Rust .
, Rust, 2015 . Rust? Discourse.
, Rust, , , Rust . , Rust , , Rust !
, - Rust, . ? ? ENTER , тАж Ctrl+O "" тАФ , MC
, , Rust Book.
, , ( Rust , ) , NLL, , , , , . Rust Intellij Idea.
5 Rust Rust . Rust , , - . Rust-
тАФ nlinker (Translation Team)
Rust 2017 .
.
.
.
- Rust book first edition
- Rust by example
- Rustonomicon.
.
.
Rust by example, Rust book second edition, Async book
Rust , 3 5 . .
тАФ andreevlex ( rust-lang-ru)
рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рд░реВрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ рдпрд╛ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЪреИрдЯ рдореЗрдВ рдорджрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред
рдпрд╣ рд▓реЗрдЦ рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ andreevlex, funkill, nlinker, L4L, Hirrolot, Po0lunin рддрдерд╛ blandgerред