Blog Series Doelen
Het doel van deze blog serie is om beter te worden in Rust. Rust is op dit moment een van mijn favoriete programmeertalen. Hoewel ik de meeste programma’s wel zou kunnen schrijven in Rust, zijn er nog een aantal programmeerprincipes die ik niet goed genoeg ken. In deze serie neem ik je daarom mee op mijn weg om beter te worden in Rust.
Daarnaast wil ik ook HTTP servers beter leren begrijpen. Ik wil HTTP servers beter leren begrijpen, omdat het iets is wat we dagelijks gebruiken. Neem bijvoorbeeld buienrader, wanneer je in de Netwerk tab van je programming tools kijkt, zie je een request naar forecast.buienradar.nl
, wat waarschijnlijk de HTTP server is die de weersvoorspelling terugstuurt naar de browser.
Ik gebruik ze eigenlijk ook vaak wanneer ik een API maak (zoals Fastapi in Python of Axum in Rust). Omdat ik HTTP servers zo vaak gebruik, wil ik nu weleens weten wat er eigenlijk achter de schermen gebeurt.
Ik denk dat deze twee doelen goed samengaan, omdat je een HTTP server redelijk klein kan beginnen maar je die uit kan bouwen naar een geavanceerd project. Daardoor kan je veel Rust-principes uitproberen, en het is niet een project dat nooit in het echt gebruikt zal worden. Zoals ik eerder vertelde worden HTTP servers juist veel gebruikt.
In deze eerste post van de serie houden we het makkelijk. We gaan namelijk Rust installeren, onze code editor instellen en als laatste het project aanmaken.
Ik gebruik een Mac, als je een ander OS gebruikt kunnen de stappen hieronder iets wijzigen
Rust Installeren
Rust installeren is een eitje, omdat Rust gemakkelijke developer tools heeft gemaakt. Een van deze tools is rustup
, en die tool wordt gebruikt om Rust te installeren en te updaten.
Omdat het installatieproces van rustup
mogelijk kan wijzigen, refereer ik daarvoor naar de officiele Rust website.
Na het installeren van rustup
kunnen we door naar de volgende stap: de editor.
Mocht je meer informatie over
rustup
willen, dan verwijs ik je naar dit boek: https://rust-lang.github.io/rustup/
De Code Editor Gereed Maken
Sinds een aantal maanden gebruik ik Neovim als code editor. Dus de volgende stappen zijn specifiek voor Neovim. Wanneer je een andere editor gebruikt, ga dan opzoek naar hoe je die kunt instellen. Ik kan me niet voorstellen dat daar geen andere blogs / manuals voor zijn.
Toen ik Neovim heb opgezet, heb ik kickstart.nvim gebruikt. Tot dusver ben ik zeer positief over deze configuratie. Neovim gebruikt LSP’s (Language Server Protocol’s) om zaken zoals Auto Completion te regelen. En kickstart.nvim gebruikt de mason.nvim plugin om LSP’s te beheren. Kickstart.nvim heeft het toevoegen van de Rust LSP (rust_analyzer) gemakkelijk gemaakt door die met comments toe te voegen. Dus om de LSP toe te voegen, hoef je alleen de comments (de twee streeps --
) weg te halen op deze regel:
-- rust_analyzer = {},
wordt
rust_analyzer = {},
Wanneer je dat hebt gedaan hoef je alleen Neovim te herstarten. Wanneer je vanaf nu een Rust-bestand opent, wordt de LSP aan het bestand gekoppeld. Zo heb je direct alle voordelen van de rust_analyzer LSP.
Het Project Maken
Als laatste gaan we het project opzetten. Met het installeren van rustup
is ook cargo
geïnstalleerd. Cargo is Rust’s build tool en package manager. Een van de features van cargo
is het maken van een nieuw project. Het maken van een nieuw project doe je met cargo new
:
cargo new rust_principles_http_server
Dit maakt een nieuwe map met de naam rust_principles_http_server
. In deze map maakt cargo
drie dingen aan:
.
├── Cargo.toml
└── src
└── main.rs
Ik wil nog niet te diep op de verschillende componenten ingaan (wie weet komt dat in een volgende blog post), maar in het kort:
Cargo.toml
is een manifest dat alle metadata bevat die Cargo nodig heeft om het project te compileren.- In de
src
folder komt alle source code voor het project. main.rs
is het beginpunt van het project, dit is waar het uitvoeren van de code begint.
Als laatste gaan we dit project uitvoeren om te controleren of alles tot dusver nog werkt. Navigeer naar het project in in dit voorbeeld, rust_principles_http_server
. Om het project te compileren heb je dit cargo commando
: cargo build
Vervolgens kan je het project draaien door cargo run
uit te voeren (dit compileert je code ook, dus je hoeft cargo build
niet uit te voeren voor cargo run
). Wanneer alles goed is gegaan, zie je de tekst Hello, world!
verschijnen in je terminal.
Ook Cargo heeft zijn eigen boek. En in de toekomst zullen we meer van
cargo
gaan zien en hoe zich dat verhoudt tot de source code enCargo.toml
.
Tot Slot
Dit was het voor nu. In deze post hebben we Rust geïnstalleerd, Neovim geconfigureerd en het Rust project gemaakt (hier is de Github repository met de code.
Voor de volgende keer staan twee dingen op de planning:
- Ownership, Borrowing and Lifetimes.
- Begin van de HTTP server
Tot de volgende!
Mees