рдкрд╛рдБрдЪ рд╕рд╛рд▓ рдХреА рдЬрдВрдЧ

рдЕрднреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬреЛ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд░рд╣реА рд╣реИ, рдЙрд╕рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреЛ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ 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.2.0 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред


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.

1.43.0 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред


()

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.2.0 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред


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.

1.43.0 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред


( )

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.2.0 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред


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.

1.43.0 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЯрд░реНрдорд┐рдирд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред



, . , :


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ред


All Articles