iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Software Development

Rust的多方面運用系列 第 7

[Day7] struct 結構體

今天突然整個不知道要寫什麼 @@
一定是禮拜六要上課的關係 ##


今天呢 就來講講有關於 Rust 的 struct 吧!

use std::io;

struct User {
    name: String,
    password: String,
    email: String,
}

fn main() -> io::Result<()>{
    let a = User {
        name: "Kent".to_string(),
        password: "123456".to_string(),
        email: "kent1129o0@gmail.com".to_string()
    };
    let mut input_name = String::new();
    io::stdin().read_line(&mut input_name).unwrap();
    let mut input_password= String::new();
    io::stdin().read_line(&mut input_password).unwrap();
    println!("{:#}{:#}", input_name, input_password);
    if a.name.eq(&input_name.trim()) || a.password.eq(&input_password.trim()) {
        println!("Your Email is {:#}", a.email);
    }
    else {
        println!("Error Name or Password");
    }
    Ok(())
}

我趁著中午寫了一點點的 Code 那我會逐步解釋上面的東西
希望這種形式大家喜歡 ><

最上面的 use std::io 這是什麼意思呢?
std 就是標準庫,然後我從中取出了一個區塊因為後面輸入會用到
但是其實也可以直接寫完整路徑,只是程式碼會變得壟長,所以這裡就先 use 他
下面能夠看到我定義出了一個名為 User 的 Struct 裡面會有 name password email
那後面我在 Main Function 中使用了此 Struct 並且命名為 a
可以發現 後面使用的時候就能直接取出原本定義的 a Struct 裡頭定義的東西。
後面就是輸入的環節可以看到說使用了 io::stdin() 裡面的 readline
在使用前先定義出一個空的字串然後在將他作為參數傳入剛剛講的 readline
那為什麼要 .unwrap 呢?
因為這個回傳的會是一個 Result<T, E> 這個後面會詳細說明,現在只要記得說這是為了避免錯誤而出現的篩選機制,(好像都講完他的特色了)反正, .unwrap() 就是讓他變成是非 Error 的那個
也能用 ? 來做簡寫
後面的話就是比較的部份

io::stdin().read_line(&mut input_password)?;

像這樣
後面則是比較部份,我就直接使用內建的 eq 處理比較的部份
不過需要注意的是 readline會多讀一個換行 所以使用 trim() 去除換行就能成功了。

所以以上提到了,怎麼定義 Struct 以及如何輸入
那必然的 Struct 絕對不只於此其實他的定義也可以設為 tuple 元組,tuple是之前在講函數時有講到回傳多項那邊的東西,把多個變數包在一起。

struct tup(i32, i8);

那麼以上就是所有 Struct 的內容
明天我會提到 impl 算是 Rust 中的 Class 吧
標題每天都好難定 都覺得很俗QQ


上一篇
[Day6] Vector 使用 以及 迴圈更深應用
下一篇
[Day8] impl 以及 mod (將程式碼放在不同檔案使用)
系列文
Rust的多方面運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言