{"id":6800,"date":"2020-08-26T08:31:22","date_gmt":"2020-08-26T06:31:22","guid":{"rendered":"https:\/\/blog.via-internet.de\/?p=6800"},"modified":"2024-05-15T09:15:54","modified_gmt":"2024-05-15T07:15:54","slug":"rust-get-started","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2020\/08\/26\/rust-get-started\/","title":{"rendered":"Rust | Getting Started"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Learning-Rust-in-7-Days.webp\" alt=\"\" class=\"wp-image-10217\" srcset=\"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Learning-Rust-in-7-Days.webp 1024w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Learning-Rust-in-7-Days-300x300.webp 300w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Learning-Rust-in-7-Days-150x150.webp 150w, https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2024\/05\/Learning-Rust-in-7-Days-768x768.webp 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"introduction\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">From <a href=\"https:\/\/en.wikipedia.org\/wiki\/Rust_(programming_language)\">Wikipedia<\/a>, the free encyclopedia:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Rust<\/strong>\u00a0is a\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Multi-paradigm_programming_language\">multi-paradigm<\/a>\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Programming_language\">programming language<\/a>\u00a0focused on\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Computer_performance\">performance<\/a>\u00a0and\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Memory_safety\">safety<\/a>, especially safe\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Concurrency_(computer_science)\">concurrency<\/a>. Rust is\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Syntax_(programming_languages)\">syntactically<\/a>\u00a0similar to\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B\">C++<\/a>,\u00a0and provides\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Memory_safety\">memory safety<\/a>\u00a0without using\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Garbage_collection_(computer_science)\">garbage collection<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Rust was originally designed by Graydon Hoare at\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Mozilla\">Mozilla<\/a>\u00a0Research.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It has gained increasing use in industry and is now Microsoft&#8217;s language of choice for secure and safety-critical software components.<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Rust has been the &#8220;most loved programming language&#8221; in the\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Stack_Overflow\">Stack Overflow<\/a>\u00a0Developer Survey every year since 2016.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Rust could be used in different areas<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/rustwasm.github.io\/docs\/book\/\">Web Assembly<\/a><\/li>\n\n\n\n<li>Embedded Programming<\/li>\n\n\n\n<li>Command Line Utilities<\/li>\n\n\n\n<li>Operating System Developmend (see <a href=\"https:\/\/www.redox-os.org\/\" data-type=\"URL\" data-id=\"https:\/\/www.redox-os.org\/\">Redox OS<\/a>)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"read-more\">Read more<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>On Stack Overflow : <a href=\"https:\/\/stackoverflow.blog\/2020\/01\/20\/what-is-rust-and-why-is-it-so-popular\/#:~:text=With%20direct%20access%20to%20hardware,system%20kernels%20or%20microcontroller%20applications.\">What is Rust and why is it so popular?<\/a><\/li>\n\n\n\n<li>Awesome Lists of Rust Examples:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/rust-unofficial\/awesome-rust\" target=\"_blank\" rel=\"noreferrer noopener\">rust-unofficial\/awesome-rust<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/not-yet-awesome-rust\/not-yet-awesome-rust\" target=\"_blank\" rel=\"noreferrer noopener\">not-yet-awesome-rust\/not-yet-awesome-rust<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/phoenixenero\">phoenixenero<\/a>\/<a href=\"https:\/\/github.com\/phoenixenero\/awesome-rust\">awesome-rust<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installation\">Installation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"rustup\">Rustup<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Download install script and run it<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl --proto '=https' --tlsv1.2 -sSf https:\/\/sh.rustup.rs | sh<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Modify .bashrc to add Rust path to PATH<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">source $HOME\/.cargo\/env<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"other-way-to-install-rust-on-macos\">Other way to install Rust on MacOS<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">brew install rust<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"create-and-run-your-first-app\">Create and run your first App<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-the-app\">Create the app<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ cargo new hello_world\n$ cd hello_world<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"show-folder-structure\">Show folder structure<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ tree .\n.\n\u251c\u2500\u2500 Cargo.lock\n\u251c\u2500\u2500 Cargo.toml\n\u2514\u2500\u2500 src\n    \u2514\u2500\u2500 main.rs<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">1 directory, 3 files<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"show-main-source-file\">Show main source file<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"rust\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fn main() {\n    println!(\"Hello, world!\");\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"build-your-app\">Build your app<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ cargo build\nCompiling hello_world v0.1.0 (...\/hello_world)\nFinished dev [unoptimized + debuginfo] target(s) in 6.32s<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or build a production ready version<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ cargo build --release&lt;br>Finished release [optimized] target(s) in 0.19s<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"run-your-app\">Run your app<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ cargo run\nFinished dev [unoptimized + debuginfo] target(s) in 0.04s\nRunning `target\/debug\/hello_world\nHello, world!<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"add-functionality-to-your-app\">Add functionality to your app<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"add-dependencies\">Add Dependencies<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s add a dependency to our application. You can find all sorts of libraries on&nbsp;<a href=\"https:\/\/crates.io\/\">crates.io<\/a>, the package registry for Rust. In Rust, we often refer to packages as \u201ccrates.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this project, we\u2019ll use a crate called&nbsp;<a href=\"https:\/\/crates.io\/crates\/ferris-says\"><code>ferris-says<\/code><\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In our&nbsp;<code>Cargo.toml<\/code>&nbsp;file we\u2019ll add this information (that we got from the crate page):<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"rust\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[dependencies]\nferris-says = \"0.1\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"modify-main-source\">Modify main source<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Now let\u2019s write a small application with our new dependency. In our&nbsp;<code>main.rs<\/code>, add the following code:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"rust\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">use ferris_says::say; \/\/ from the previous step\nuse std::io::{stdout, BufWriter};\n\nfn main() {\n    let stdout = stdout();\n    let message = String::from(\"Hello fellow Rustaceans!\");\n    let width = message.chars().count();\n\n    let mut writer = BufWriter::new(stdout.lock());\n    say(message.as_bytes(), width, &amp;mut writer).unwrap();\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"run-app\">Run App<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ cargo build\n    Updating crates.io index\n  Downloaded object v0.20.0\n  Downloaded textwrap v0.11.0\n  Downloaded adler v0.2.3\n  Downloaded ansi_term v0.11.0\n  Downloaded miniz_oxide v0.4.1\n  Downloaded gimli v0.22.0\n  Downloaded strsim v0.8.0\n  Downloaded error-chain v0.10.0\n  Downloaded vec_map v0.8.2\n  Downloaded clap v2.33.3\n  Downloaded smallvec v0.4.5\n  Downloaded ferris-says v0.1.2\n  Downloaded backtrace v0.3.50\n  Downloaded rustc-demangle v0.1.16\n  Downloaded addr2line v0.13.0\n  Downloaded 15 crates (1.4 MB) in 1.65s\n   Compiling libc v0.2.76\n   Compiling bitflags v1.2.1\n   Compiling gimli v0.22.0\n   Compiling adler v0.2.3\n   Compiling rustc-demangle v0.1.16\n   Compiling unicode-width v0.1.8\n   Compiling object v0.20.0\n   Compiling cfg-if v0.1.10\n   Compiling strsim v0.8.0\n   Compiling vec_map v0.8.2\n   Compiling ansi_term v0.11.0\n   Compiling smallvec v0.4.5\n   Compiling textwrap v0.11.0\n   Compiling miniz_oxide v0.4.1\n   Compiling addr2line v0.13.0\n   Compiling atty v0.2.14\n   Compiling backtrace v0.3.50\n   Compiling clap v2.33.3\n   Compiling error-chain v0.10.0\n   Compiling ferris-says v0.1.2\n   Compiling hello_world v0.1.0 (...\/hello_world)\n    Finished dev [unoptimized + debuginfo] target(s) in 14.73s<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Run your app<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ cargo run\n     Finished dev [unoptimized + debuginfo] target(s) in 0.14s\n       Running`target\/debug\/hello_world`<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">----------------------------\n| Hello fellow Rustaceans! |\n----------------------------\n              \\\n               \\\n                  _~^~^~_\n              \\) \/  o o  \\ (\/\n                '_   -   _'\n                \/ '-----' \\<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"next-steps\">Next steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Read <a href=\"https:\/\/www.rust-lang.org\/learn\/get-started\">Getting Started<\/a> on rust homepage<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Explore <a href=\"https:\/\/www.rust-lang.org\/learn\">Learn Rust<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"next-readings\">Next Readings<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/blog.rust-lang.org\">https:\/\/blog.rust-lang.org<\/a><\/li>\n\n\n\n<li>https:\/\/blog.rust-lang.org\/inside-rust\/<\/li>\n\n\n\n<li><a href=\"https:\/\/doc.rust-lang.org\/book\/\">https:\/\/doc.rust-lang.org\/book\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/doc.rust-lang.org\/rust-by-example\/\">https:\/\/doc.rust-lang.org\/rust-by-example\/<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Readings<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/rust-lang\/book\">https:\/\/github.com\/rust-lang\/book<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/rust-lang\/rustlings\/\">https:\/\/github.com\/rust-lang\/rustlings\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/rust-cli\/book\">https:\/\/github.com\/rust-cli\/book<\/a><\/li>\n\n\n\n<li>https:\/\/github.com\/rust-unofficial\/awesome-rust<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Exercises<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/exercism.org\/tracks\/rust\">https:\/\/exercism.org\/tracks\/rust<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introduction From Wikipedia, the free encyclopedia: Rust\u00a0is a\u00a0multi-paradigm\u00a0programming language\u00a0focused on\u00a0performance\u00a0and\u00a0safety, especially safe\u00a0concurrency. Rust is\u00a0syntactically\u00a0similar to\u00a0C++,\u00a0and provides\u00a0memory safety\u00a0without using\u00a0garbage collection. Rust was originally designed by Graydon Hoare at\u00a0Mozilla\u00a0Research. It has gained increasing use in industry and is now Microsoft&#8217;s language of choice for secure and safety-critical software components. Rust has been the &#8220;most loved programming language&#8221; in the\u00a0Stack Overflow\u00a0Developer Survey every year since 2016. Rust could be used in different areas Read more Installation Rustup Download install script and run it Modify .bashrc to add Rust path to PATH Other way to install Rust on MacOS Create and run your first App [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":8391,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[68],"tags":[],"class_list":["post-6800","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rust"],"jetpack_featured_media_url":"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2021\/08\/rust-cookbook-1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/6800","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=6800"}],"version-history":[{"count":5,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/6800\/revisions"}],"predecessor-version":[{"id":10218,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/6800\/revisions\/10218"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media\/8391"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=6800"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=6800"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=6800"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}