| # The Rustonomicon |
| |
| The Dark Arts of Advanced and Unsafe Rust Programming |
| |
| Nicknamed "the Nomicon." |
| |
| ## NOTE: This is a draft document, and may contain serious errors |
| |
| > Instead of the programs I had hoped for, there came only a shuddering blackness |
| and ineffable loneliness; and I saw at last a fearful truth which no one had |
| ever dared to breathe before — the unwhisperable secret of secrets — The fact |
| that this language of stone and stridor is not a sentient perpetuation of Rust |
| as London is of Old London and Paris of Old Paris, but that it is in fact |
| quite unsafe, its sprawling body imperfectly embalmed and infested with queer |
| animate things which have nothing to do with it as it was in compilation. |
| |
| This book digs into all the awful details that are necessary to understand in |
| order to write correct Unsafe Rust programs. Due to the nature of this problem, |
| it may lead to unleashing untold horrors that shatter your psyche into a billion |
| infinitesimal fragments of despair. |
| |
| ### Requirements |
| |
| Building the Nomicon requires [mdBook]. To get it: |
| |
| [mdBook]: https://github.com/azerupi/mdBook |
| |
| ```bash |
| $ cargo install mdbook |
| ``` |
| |
| ### Building |
| |
| To build the Nomicon: |
| |
| ```bash |
| $ mdbook build |
| ``` |
| |
| The output will be in the `book` subdirectory. To check it out, open it in |
| your web browser. |
| |
| _Firefox:_ |
| ```bash |
| $ firefox book/index.html # Linux |
| $ open -a "Firefox" book/index.html # OS X |
| $ Start-Process "firefox.exe" .\book\index.html # Windows (PowerShell) |
| $ start firefox.exe .\book\index.html # Windows (Cmd) |
| ``` |
| |
| _Chrome:_ |
| ```bash |
| $ google-chrome book/index.html # Linux |
| $ open -a "Google Chrome" book/index.html # OS X |
| $ Start-Process "chrome.exe" .\book\index.html # Windows (PowerShell) |
| $ start chrome.exe .\book\index.html # Windows (Cmd) |
| ``` |
| |
| To run the tests: |
| |
| ```bash |
| $ mdbook test |
| ``` |
| |
| ## Contributing |
| |
| Given that the Nomicon is still in a draft state, we'd love your help! Please feel free to open |
| issues about anything, and send in PRs for things you'd like to fix or change. If your change is |
| large, please open an issue first, so we can make sure that it's something we'd accept before you |
| go through the work of getting a PR together. |