Clarify the English translation of `?Sized` * It wasn't clear whether `?Sized` meant "not `Sized`" or "`Sized` or not `Sized`". According to #rust IRC, it does indeed mean "`Sized` or not `Sized`". * Use the same language as [Trait std::marker::Sized](https://doc.rust-lang.org/std/marker/trait.Sized.html) about how `Sized` is implicitly bound. * Refer to the syntax as `?Sized`, since it's currently the only allowed trait that can follow `?`. |
||
|---|---|---|
| .. | ||
| advanced-linking.md | ||
| associated-constants.md | ||
| associated-types.md | ||
| attributes.md | ||
| benchmark-tests.md | ||
| bibliography.md | ||
| borrow-and-asref.md | ||
| box-syntax-and-patterns.md | ||
| casting-between-types.md | ||
| choosing-your-guarantees.md | ||
| closures.md | ||
| comments.md | ||
| compiler-plugins.md | ||
| concurrency.md | ||
| conditional-compilation.md | ||
| const-and-static.md | ||
| crates-and-modules.md | ||
| custom-allocators.md | ||
| deref-coercions.md | ||
| documentation.md | ||
| drop.md | ||
| effective-rust.md | ||
| enums.md | ||
| error-handling.md | ||
| ffi.md | ||
| functions.md | ||
| generics.md | ||
| getting-started.md | ||
| glossary.md | ||
| guessing-game.md | ||
| if-let.md | ||
| if.md | ||
| inline-assembly.md | ||
| intrinsics.md | ||
| iterators.md | ||
| lang-items.md | ||
| lifetimes.md | ||
| loops.md | ||
| macros.md | ||
| match.md | ||
| method-syntax.md | ||
| mutability.md | ||
| nightly-rust.md | ||
| no-stdlib.md | ||
| operators-and-overloading.md | ||
| ownership.md | ||
| patterns.md | ||
| primitive-types.md | ||
| raw-pointers.md | ||
| README.md | ||
| references-and-borrowing.md | ||
| release-channels.md | ||
| slice-patterns.md | ||
| strings.md | ||
| structs.md | ||
| SUMMARY.md | ||
| syntax-and-semantics.md | ||
| syntax-index.md | ||
| testing.md | ||
| the-stack-and-the-heap.md | ||
| trait-objects.md | ||
| traits.md | ||
| type-aliases.md | ||
| ufcs.md | ||
| unsafe.md | ||
| unsized-types.md | ||
| using-rust-without-the-standard-library.md | ||
| variable-bindings.md | ||
| vectors.md | ||
% The Rust Programming Language
Welcome! This book will teach you about the Rust Programming Language. Rust is a systems programming language focused on three goals: safety, speed, and concurrency. It maintains these goals without having a garbage collector, making it a useful language for a number of use cases other languages aren’t good at: embedding in other languages, programs with specific space and time requirements, and writing low-level code, like device drivers and operating systems. It improves on current languages targeting this space by having a number of compile-time safety checks that produce no runtime overhead, while eliminating all data races. Rust also aims to achieve ‘zero-cost abstractions’ even though some of these abstractions feel like those of a high-level language. Even then, Rust still allows precise control like a low-level language would.
“The Rust Programming Language” is split into chapters. This introduction is the first. After this:
- Getting started - Set up your computer for Rust development.
- Tutorial: Guessing Game - Learn some Rust with a small project.
- Syntax and Semantics - Each bit of Rust, broken down into small chunks.
- Effective Rust - Higher-level concepts for writing excellent Rust code.
- Nightly Rust - Cutting-edge features that aren’t in stable builds yet.
- Glossary - A reference of terms used in the book.
- Bibliography - Background on Rust's influences, papers about Rust.
Contributing
The source files from which this book is generated can be found on GitHub.