diff options
author | garhve <git@garhve.com> | 2023-01-12 19:13:20 +0800 |
---|---|---|
committer | garhve <git@garhve.com> | 2023-01-12 19:13:20 +0800 |
commit | d743c344988884c81e247a0ab9c2696912d8a1e3 (patch) | |
tree | 962d14b12459f0725dc81b43514c984c7285b6c1 | |
parent | 2a9ade7cf6080d1649dbd0a03de61f3387325ae9 (diff) |
first half of the first rust note
l---------[-rwxr-xr-x] | blog.sh | 80 | ||||
-rw-r--r-- | content/post/no problemo.md | 4 | ||||
-rw-r--r-- | content/post/rust basic.md | 52 | ||||
-rw-r--r-- | public/categories/code/index.html | 9 | ||||
-rw-r--r-- | public/categories/index.html | 2 | ||||
-rw-r--r-- | public/index.html | 28 | ||||
-rw-r--r-- | public/post/index.html | 28 | ||||
-rw-r--r-- | public/post/no-problemo/index.html | 4 | ||||
-rw-r--r-- | public/post/rust-basic/index.html | 107 | ||||
-rw-r--r-- | public/sitemap.xml | 7 | ||||
-rw-r--r-- | public/tags/index.html | 5 | ||||
-rw-r--r-- | public/tags/rust/index.html | 57 |
12 files changed, 299 insertions, 84 deletions
@@ -1,79 +1 @@ -#!/usr/bin/env sh - -###################################################################### -# @author : garhve (dev@garhve.com) -# @file : blog -# @created : Friday Dec 09, 2022 16:09:42 CST -# -# @description : simplify blog publishing, it only can use in blog dir -###################################################################### - -# usage: prog funct - -push() { - read -r -p "Do you want to push?[y/n] " ans - if [ "$ans" == 'y' ]; then - zola build - git add . - if [ ! -z "$(git status | grep 'Changes to be committed')" ]; then - read -r -p "commit message: " msg - git commit -m "$msg" - git push origin main - fi - echo -e "push done" - fi -} - -edit() { - path="content/post" - - # --- get editing file - choice=1 - declare -a arr - for file in $path/*; do - [[ "$file" == *"_index.md" ]] && continue - echo -ne "($choice)\x1b[0;32m${file##*/}\x1b[0m " # n get rid of trailing new line, e strip backslash - arr[$choice]="$file" - choice=$((choice+1)) - done - echo "" - read -r -p "please choose file by number you want to edit from above: " num - [[ "$num" == "q" ]] && exit 0 - vim "${arr[$num]}" - # --- end - echo -e "edit done\n" - - push - echo -e "\nall done" -} - -new() { - read -r -p "blog name: " name - path="content/post/$name" - - vim "$path".md - [ "$?" -eq 0 ] && echo "creation done" - [ "$?" -ne 0 ] && echo "creation fail, please check error" && exit 1 - - read -r -p "do you want to edit now?[y/n] " ans - [ "${ans,,}" == 'y' ] && vim "$path/$name.md" && echo "edit done" - - push - - echo -e "\nall done" -} - -list() { - echo -e "\x1b[1;34mList content:\x1b[0m" - tree ./content/post -} - - -funct="new/edit/push/ls" - -[ $# -lt 1 ] && echo "usage: $(basename $0) $funct" - -[ $1 == "new" ] && new -[ $1 == "edit" ] && edit -[ $1 == "push" ] && push -[ $1 == "ls" ] && list +/home/pico/codes/bash/blog-zola.sh
\ No newline at end of file diff --git a/content/post/no problemo.md b/content/post/no problemo.md index 5cd9b8c..0728fa0 100644 --- a/content/post/no problemo.md +++ b/content/post/no problemo.md @@ -12,7 +12,7 @@ My feeling to express are fading... Not sure how I know it, just got this sense. Recently, I picked up an anime named "[The Simpsons](https://en.wikipedia.org/wiki/The_Simpsons)" which I watched first episode back in highschool. This first time was not gave me too much impression. -but I fell in love with it right after re-watched first episode! So I downloaded the series up to 17.(33 in total but I'm not in rush) +but I fell in love with it right after re-watched first episode! So I downloaded the half of the whole series.  -It double +The anime is just about diff --git a/content/post/rust basic.md b/content/post/rust basic.md new file mode 100644 index 0000000..8e765b9 --- /dev/null +++ b/content/post/rust basic.md @@ -0,0 +1,52 @@ ++++ +title = "rust basic -- types and ownership" +date = 2023-01-12 +[taxonomies] +categories = ["code"] +tags = ["rust"] +[extra] +math = false ++++ + +## Types +> 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. + +There are a bunch of built-in types we can work with: *scalar types* and *compound types*. +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 | + +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. + +| compound type | rust | c | +| ------------- |------------- | ------- | +| struct | same | same | +| enum | enum element can be seen as key that could take value | represent numberic value, default starting from 0 | +| array | vector | array | +| string | a wraper of vector | pointer of char * | +| tuple | exist | no such type in C | + +Variable declaration in rust is kinda tricky. + +A normal declare syntax would be like `let unmutable_variable = 3`. This will imply that variable is `i32` type +since the value we assign to is a integer and the default type for integer on most OS is `i32`. +We can explicit type by using type annotation: `let unmutable_variable: u8 = 3`. This will make variable +`unmutable_variable` is `u8` 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. + +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: +```rust +let mut mutable_variable = 3; +println!("first define: {mutable_variable}"); +mutable_variable = 5; + +println!("change value to: {mutable_variable}"); +``` + +> `println!()` is called macro, which would not cover for now. diff --git a/public/categories/code/index.html b/public/categories/code/index.html index ef76831..5573296 100644 --- a/public/categories/code/index.html +++ b/public/categories/code/index.html @@ -37,6 +37,15 @@ <p> <div class="date"> + 2023-01-12 + </div> + <div class="archive_title"> + <a href="https://blog.garhve.com/post/rust-basic/">rust basic -- types and ownership</a> + </div> +</p> + +<p> + <div class="date"> 2022-09-29 </div> <div class="archive_title"> diff --git a/public/categories/index.html b/public/categories/index.html index addaa1a..bb154ac 100644 --- a/public/categories/index.html +++ b/public/categories/index.html @@ -38,7 +38,7 @@ <li> <a href="https://blog.garhve.com/categories/code/">/code</a> - (3) + (4) </li> <li> diff --git a/public/index.html b/public/index.html index 44f11a4..51cc3e5 100644 --- a/public/index.html +++ b/public/index.html @@ -35,6 +35,34 @@ + <h3>2023 </h3> + + + <p> + <div class="date"> + 2023-01-12 + </div> + + <div class="title"> + <a href="https://blog.garhve.com/post/rust-basic/">rust basic -- types and ownership</a> + </div> + + <div class="taxonomies_index"> + + +  <a href="https://blog.garhve.com/categories/code/">/code</a> + + + + + +  <a href="https://blog.garhve.com/tags/rust/">#rust</a> + + + </div> + </p> + + <h3>2022 </h3> diff --git a/public/post/index.html b/public/post/index.html index 44f11a4..51cc3e5 100644 --- a/public/post/index.html +++ b/public/post/index.html @@ -35,6 +35,34 @@ + <h3>2023 </h3> + + + <p> + <div class="date"> + 2023-01-12 + </div> + + <div class="title"> + <a href="https://blog.garhve.com/post/rust-basic/">rust basic -- types and ownership</a> + </div> + + <div class="taxonomies_index"> + + +  <a href="https://blog.garhve.com/categories/code/">/code</a> + + + + + +  <a href="https://blog.garhve.com/tags/rust/">#rust</a> + + + </div> + </p> + + <h3>2022 </h3> diff --git a/public/post/no-problemo/index.html b/public/post/no-problemo/index.html index cb80737..3742499 100644 --- a/public/post/no-problemo/index.html +++ b/public/post/no-problemo/index.html @@ -55,9 +55,9 @@ <p>My feeling to express are fading... Not sure how I know it, just got this sense.</p> <p>Recently, I picked up an anime named "<a href="https://en.wikipedia.org/wiki/The_Simpsons">The Simpsons</a>" which I watched first episode back in highschool. This first time was not gave me too much impression. -but I fell in love with it right after re-watched first episode! So I downloaded the series up to 17.(33 in total but I'm not in rush) +but I fell in love with it right after re-watched first episode! So I downloaded the half of the whole series. <img src="https://assets.garhve.com/pictures/screenshots/2022/12/ob8AFE.png" alt="simpson tv list" /></p> -<p>It double</p> +<p>The anime is just about </p> </p> 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> diff --git a/public/sitemap.xml b/public/sitemap.xml index 02cae4b..89cf628 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -59,6 +59,10 @@ <lastmod>2022-11-07</lastmod> </url> <url> + <loc>https://blog.garhve.com/post/rust-basic/</loc> + <lastmod>2023-01-12</lastmod> + </url> + <url> <loc>https://blog.garhve.com/post/sui-bi-1/</loc> <lastmod>2022-12-20</lastmod> </url> @@ -77,4 +81,7 @@ <url> <loc>https://blog.garhve.com/tags/linux/</loc> </url> + <url> + <loc>https://blog.garhve.com/tags/rust/</loc> + </url> </urlset> diff --git a/public/tags/index.html b/public/tags/index.html index 64ba538..3aa2945 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -56,6 +56,11 @@ (1) </li> + <li> + <a href="https://blog.garhve.com/tags/rust/">#rust</a> + (1) + </li> + </ul> </div> diff --git a/public/tags/rust/index.html b/public/tags/rust/index.html new file mode 100644 index 0000000..5928831 --- /dev/null +++ b/public/tags/rust/index.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="utf-8"> + +<title>rust | 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 class="archive_title">[Tag: rust]</p> + + +<p> + <div class="date"> + 2023-01-12 + </div> + <div class="archive_title"> + <a href="https://blog.garhve.com/post/rust-basic/">rust basic -- types and ownership</a> + </div> +</p> + + + + </div> + </section> +</body> + +<div class="footer"> +  © garhve +</div> + +</html> |