1% Rust Documentation 2 3<style> 4nav { 5 display: none; 6} 7body { 8 font-family: serif; 9} 10h1, h2, h3, h4, h5, h6 { 11 font-family: sans-serif; 12} 13h3 { 14 font-size: 1.35rem; 15} 16h4 { 17 font-size: 1.1rem; 18} 19 20/* Formatting for docs search bar */ 21#search-input { 22 width: calc(100% - 58px); 23} 24#search-but { 25 cursor: pointer; 26} 27#search-but, #search-input { 28 padding: 4px; 29 border: 1px solid #ccc; 30 border-radius: 3px; 31 outline: none; 32 font-size: 0.7em; 33 background-color: #fff; 34} 35#search-but:hover, #search-input:focus { 36 border-color: #55a9ff; 37} 38 39/* Formatting for external link icon */ 40svg.external-link { 41 display: inline-block; 42 position: relative; 43 vertical-align: super; 44 width: 0.7rem; 45 height: 0.7rem; 46 padding-left: 2px; 47 top: 3px; 48} 49</style> 50 51Welcome to an overview of the documentation provided by the [Rust 52project]. This page contains links to various helpful references, 53most of which are available offline (if opened with `rustup doc`). Many of these 54resources take the form of "books"; we collectively call these "The Rust 55Bookshelf." Some are large, some are small. 56 57All of these books are managed by the Rust Organization, but other unofficial 58documentation resources are included here as well! 59 60If you're just looking for the standard library reference, here it is: 61[Rust API documentation](std/index.html) 62 63 64## Learning Rust 65 66If you'd like to learn Rust, this is the section for you! All of these resources 67assume that you have programmed before, but not in any specific language: 68 69### The Rust Programming Language 70 71Affectionately nicknamed "the book," [The Rust Programming Language](book/index.html) 72will give you an overview of the language from first principles. You'll build a 73few projects along the way, and by the end, you'll have a solid grasp of how to 74use the language. 75 76### Rust By Example 77 78If reading multiple hundreds of pages about a language isn't your style, then 79[Rust By Example](rust-by-example/index.html) has you covered. RBE shows off a 80bunch of code without using a lot of words. It also includes exercises! 81 82### Rustlings 83 84[Rustlings](https://github.com/rust-lang/rustlings) guides you 85through downloading and setting up the Rust toolchain, then provides an 86interactive tool that teaches you how to solve coding challenges in Rust. 87 88### Rust Playground 89 90The [Rust Playground](https://play.rust-lang.org) is a great place 91to try out and share small bits of code, or experiment with some of the most 92popular crates. 93 94 95## Using Rust 96 97Once you've gotten familiar with the language, these resources can help you put 98it to work. 99 100### The Standard Library 101 102Rust's standard library has [extensive API documentation](std/index.html), with 103explanations of how to use various things, as well as example code for 104accomplishing various tasks. Code examples have a "Run" button on hover that 105opens the sample in the playground. 106 107<div> 108 <form action="std/index.html" method="get"> 109 <input id="search-input" type="search" name="search" 110 placeholder="Search through the standard library"/> 111 <button id="search-but">Search</button> 112 </form> 113</div> 114 115### Your Personal Documentation 116 117Whenever you are working in a crate, `cargo doc --open` will generate 118documentation for your project _and_ all its dependencies in their correct 119version, and open it in your browser. Add the flag `--document-private-items` to 120also show items not marked `pub`. 121 122### The Edition Guide 123 124[The Edition Guide](edition-guide/index.html) describes the Rust editions and 125their differences. 126 127### The `rustc` Book 128 129[The `rustc` Book](rustc/index.html) describes the Rust compiler, `rustc`. 130 131### The Cargo Book 132 133[The Cargo Book](cargo/index.html) is a guide to Cargo, Rust's build tool and 134dependency manager. 135 136### The Rustdoc Book 137 138[The Rustdoc Book](rustdoc/index.html) describes our documentation tool, `rustdoc`. 139 140### The Clippy Book 141 142[The Clippy Book](clippy/index.html) describes our static analyzer, Clippy. 143 144### Extended Error Listing 145 146Many of Rust's errors come with error codes, and you can request extended 147diagnostics from the compiler on those errors (with `rustc --explain`). You can 148also read them here if you prefer: [rustc error codes](error_codes/index.html) 149 150 151## Mastering Rust 152 153Once you're quite familiar with the language, you may find these advanced 154resources useful. 155 156### The Reference 157 158[The Reference](reference/index.html) is not a formal spec, but is more detailed 159and comprehensive than the book. 160 161### The Style Guide 162 163[The Rust Style Guide](style-guide/index.html) describes the standard formatting 164of Rust code. Most developers use `cargo fmt` to invoke `rustfmt` and format the 165code automatically (the result matches this style guide). 166 167### The Rustonomicon 168 169[The Rustonomicon](nomicon/index.html) is your guidebook to the dark arts of 170unsafe Rust. It's also sometimes called "the 'nomicon." 171 172### The Unstable Book 173 174[The Unstable Book](unstable-book/index.html) has documentation for unstable 175features. 176 177### The `rustc` Contribution Guide 178 179[The `rustc` Guide](https://rustc-dev-guide.rust-lang.org/) 180documents how the compiler works and how to contribute to it. This is useful if 181you want to build or modify the Rust compiler from source (e.g. to target 182something non-standard). 183 184 185## Specialized Rust 186 187When using Rust in specific domains, consider using the following resources 188tailored to each area. 189 190### Embedded Systems 191 192When developing for Bare Metal or Embedded Linux systems, you may find these 193resources maintained by the [Embedded Working Group] useful. 194 195[Embedded Working Group]: https://github.com/rust-embedded 196 197#### The Embedded Rust Book 198 199[The Embedded Rust Book] is targeted at developers familiar with embedded 200development and familiar with Rust, but have not used Rust for embedded 201development. 202 203[The Embedded Rust Book]: embedded-book/index.html 204[Rust project]: https://www.rust-lang.org 205 206<script> 207// check if a given link is external 208function isExternalLink(url) { 209 const tmp = document.createElement('a'); 210 tmp.href = url; 211 return tmp.host !== window.location.host; 212} 213 214// Add the `external` class to all <a> tags with external links and append the external link SVG 215function updateExternalAnchors() { 216 /* 217 External link SVG from Font-Awesome 218 CC BY-SA 3.0 https://creativecommons.org/licenses/by-sa/3.0 219 via Wikimedia Commons 220 */ 221 const svgText = `<svg 222 class='external-link' 223 xmlns='http://www.w3.org/2000/svg' 224 viewBox='0 -256 1850 1850' 225 width='100%' 226 height='100%'> 227 <g transform='matrix(1,0,0,-1,30,1427)'> 228 <path d='M 1408,608 V 288 Q 1408,169 1323.5,84.5 1239,0 1120, 229 0 H 288 Q 169,0 84.5,84.5 0,169 0,288 v 832 Q 0,1239 84.5,1323.5 169, 230 1408 288,1408 h 704 q 14,0 23,-9 9,-9 9,-23 v -64 q 0,-14 -9,-23 -9, 231 -9 -23,-9 H 288 q -66,0 -113,-47 -47,-47 -47,-113 V 288 q 0,-66 47, 232 -113 47,-47 113,-47 h 832 q 66,0 113,47 47,47 47,113 v 320 q 0,14 9, 233 23 9,9 23,9 h 64 q 14,0 23,-9 9,-9 9,-23 z m 384,864 V 960 q 0, 234 -26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 L 1507,1091 855,439 q -10, 235 -10 -23,-10 -13,0 -23,10 L 695,553 q -10,10 -10,23 0,13 10,23 l 652, 236 652 -176,176 q -19,19 -19,45 0,26 19,45 19,19 45,19 h 512 q 26,0 45, 237 -19 19,-19 19,-45 z' style='fill:currentColor' /> 238 </g> 239 </svg>`; 240 let allAnchors = document.getElementsByTagName("a"); 241 242 for (var i = 0; i < allAnchors.length; ++i) { 243 let anchor = allAnchors[i]; 244 if (isExternalLink(anchor.href)) { 245 anchor.classList.add("external"); 246 anchor.innerHTML += svgText; 247 } 248 } 249} 250 251// on page load, update external anchors 252document.addEventListener("DOMContentLoaded", updateExternalAnchors); 253 254</script> 255