diff options
Diffstat (limited to 'public/post/rust-basic/index.html')
-rw-r--r-- | public/post/rust-basic/index.html | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/public/post/rust-basic/index.html b/public/post/rust-basic/index.html new file mode 100644 index 0000000..262aee3 --- /dev/null +++ b/public/post/rust-basic/index.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="utf-8"> + +<title>rust basic -- types and ownership | garhve's gibberish</title> + + + <link rel="shortcut icon" type="image/png" href="/images/favicon.png"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + + <link id="stylesheet" rel="stylesheet" type="text/css" href="/dark.css"> + + <script type="text/javascript" src="/js/theme.js"></script> + +</head> + +<div class="header"> + <div class="site_title"> + <p><a href="/"><img src="https://blog.garhve.com/images/logo.png" alt="garhve's gibberish" + width="70" height=auto></a></p> + <p><a href="/"> garhve's gibberish</a></p> + </div> + <div class="menu"> + <!-- <a href="/tags">tags</a> + --><a href="/categories">categories</a> + </div> +</div> + +<body onload="getTheme()"> + <section class="section"> + <div class="container"> + +<p> + <div class="title_postpage">rust basic -- types and ownership</div> +</p> +<p> + <div class="date_postpage">2023-01-12</div> + <div class="taxonomies_postpage"> + + + <a href="https://blog.garhve.com/categories/code/">/code</a> + + + + +  <a href="https://blog.garhve.com/tags/rust/">#rust</a> + + + </div> +</p> + +<p> + <h2 id="types">Types</h2> +<blockquote> +<p>This is a summary of rust basic knowledge I learned from (Rust the Book)[https://doc.rust-lang.org/book/] chapter 1 ~ chapter 13 +I will use C to compare with since I familiar it.</p> +</blockquote> +<p>There are a bunch of built-in types we can work with: <em>scalar types</em> and <em>compound types</em>. +Those scalar types are just alike as C language. +| scalar types | rust | c | +| ------------- |------------- | ------- | +| integer | i(u)8/i16/i32<default>/i64 | (unsigned) char/short/int/long | +| float | f32/f64<default> | float/double | +| boolean | true/false | True/False (non-zero/zero) | +| character | char | char |</p> +<p>The compound types are a bit different. rust provides many hands-on types where C type is not the same or needs to define explicitly.</p> +<table><thead><tr><th>compound type</th><th>rust</th><th>c</th></tr></thead><tbody> +<tr><td>struct</td><td>same</td><td>same</td></tr> +<tr><td>enum</td><td>enum element can be seen as key that could take value</td><td>represent numberic value, default starting from 0</td></tr> +<tr><td>array</td><td>vector</td><td>array</td></tr> +<tr><td>string</td><td>a wraper of vector</td><td>pointer of char *</td></tr> +<tr><td>tuple</td><td>exist</td><td>no such type in C</td></tr> +</tbody></table> +<p>Variable declaration in rust is kinda tricky.</p> +<p>A normal declare syntax would be like <code>let unmutable_variable = 3</code>. This will imply that variable is <code>i32</code> type +since the value we assign to is a integer and the default type for integer on most OS is <code>i32</code>. +We can explicit type by using type annotation: <code>let unmutable_variable: u8 = 3</code>. This will make variable +<code>unmutable_variable</code> is <code>u8</code> type and has 3 as its value. We need to assign a value +to variable if we don't annotate type while declaration, otherwise compiler would prompt error.</p> +<p>Notice that, declaration as above one won't allow us to change value, if we want to be able to change variable's +value at runtime, we need to explicit it, for security reason: </p> +<pre data-lang="rust" style="background-color:#2e3440;color:#d8dee9;" class="language-rust "><code class="language-rust" data-lang="rust"><span style="color:#81a1c1;">let mut</span><span> mutable_variable </span><span style="color:#81a1c1;">= </span><span style="color:#b48ead;">3</span><span style="color:#eceff4;">; +</span><span>println!(</span><span style="color:#a3be8c;">"first define: </span><span style="color:#ebcb8b;">{mutable_variable}</span><span style="color:#a3be8c;">"</span><span>)</span><span style="color:#eceff4;">; +</span><span>mutable_variable </span><span style="color:#81a1c1;">= </span><span style="color:#b48ead;">5</span><span style="color:#eceff4;">; +</span><span> +</span><span>println!(</span><span style="color:#a3be8c;">"change value to: </span><span style="color:#ebcb8b;">{mutable_variable}</span><span style="color:#a3be8c;">"</span><span>)</span><span style="color:#eceff4;">; +</span></code></pre> +<blockquote> +<p><code>println!()</code> is called macro, which would not cover for now.</p> +</blockquote> + +</p> + + + + + </div> + </section> +</body> + +<div class="footer"> +  © garhve +</div> + +</html> |