FĂŒnf Jahre Rost

In diesem Chaos, das gerade in der Welt passiert, kann man leicht vergessen, dass seit der Veröffentlichung von 1.0 im Jahr 2015 fĂŒnf Jahre vergangen sind! Rust hat sich in diesen fĂŒnf Jahren stark verĂ€ndert, daher möchten wir an die Arbeit aller Mitglieder der Gemeinschaft erinnern, beginnend mit dem Moment, in dem sich die Sprache stabilisierte.


Denken Sie daran, wenn jemand vergessen hat: Rust ist eine universelle Programmiersprache, mit der zuverlĂ€ssige und effiziente Software erstellt werden kann. Rust kann in jedem Bereich verwendet werden: vom Kernel Ihres Betriebssystems bis zu Ihrer nĂ€chsten Webanwendung. Diese Sprache wird vollstĂ€ndig von Mitgliedern einer offenen, facettenreichen Community entwickelt, hauptsĂ€chlich von Freiwilligen, die großzĂŒgig ihre Zeit und ihr Wissen geteilt haben, um Rust so zu machen, wie es jetzt ist.


Wichtige Änderungen seit Version 1.0


2015


1.2 - Parallele Codegenerierung: Die Reduzierung der Kompilierungszeit war schon immer ein wichtiges Thema in jeder Version von Rust, und jetzt ist es schwer vorstellbar, dass es einmal eine kurze Zeit gab, in der Rust ĂŒberhaupt keine parallele Codegenerierung hatte.


1.3 - The Rustonomicon: Unsere erste Ausgabe des fantastischen Buches "The Rustonomicon", ein Buch, das die Schattenseiten von Rust, Unsafe Rust und verwandten Themen untersucht. Es ist zu einer hervorragenden Informationsquelle fĂŒr alle geworden, die die schwierigsten Aspekte der Sprache lernen und verstehen möchten.


1.4 — Windows MSVC 1: 1 64- Windows Microsoft Visual C++ (MSVC). 1.4 MinGW ( GNU Windows) Rust. Windows Rust . 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.

Ein Terminal-Screenshot der 1.2.0-Fehlermeldung.


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.

Ein Terminal-Screenshot der 1.43.0-Fehlermeldung.


()

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.

Ein Terminal-Screenshot der 1.2.0-Fehlermeldung.


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.

Ein Terminal-Screenshot der 1.43.0-Fehlermeldung.


( )

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.

Ein Terminal-Screenshot der 1.2.0-Fehlermeldung.


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.

Ein Terminal-Screenshot der 1.43.0-Fehlermeldung.



, . , :


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)



Bei Fragen zur Rust-Sprache können Sie im russischsprachigen Telegramm-Chat oder in einem Ă€hnlichen Chat fĂŒr Neulinge unterstĂŒtzt werden .


Dieser Artikel wurde gemeinsam ĂŒbersetzt andreevlex, Funkill, nlinker, l4l, Hirrolot, Po0lunin und langweiliger.


All Articles