Re: [閒聊] Rust: 從入門到入門

作者: yam276 ('_')   2025-04-28 15:51:27
: https://space.bilibili.com/361469957/lists/3902595
: 從入門到入門
1. Display
Display 是給使用者看的漂亮輸出,不能 derive,需要自己實作
use std::fmt;
struct User {
name: String,
age: u8,
}
impl fmt::Display for User {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{} ({})", self.name, self.age)
}
}
fn main() {
let user = User {
name: "Ayano".into(),
age: 18,
};
println!("{}", user); // 呼叫的是 Display!
}
2. enum 可以持有不同的副類型
fn enum_test() {
enum IpAddrKind {
V4(u8, u8, u8, u8),
V6(String),
}
let home = IpAddrKind::V4(127, 0, 0, 1);
let loopback = IpAddrKind::V6(String::from("IPv6::IP"));
}
你也可以替 enum 實現方法:
enum Message {
// ...
}
impl Message {
fn call(&self) {
// ...
}
}
3. Option Enum
enum Option<T> {
None,
Some(T),
}
來自標準庫的東西
Option 與其變體都定義在 Prelude 裡面
這就是 Rust 用來表達 nullptr 與否的方法
例子:
fn option_test() {
let x: i8 = 5;
let y: Option<i8> = Some(5);
let sum = x + y;
}
這樣不會過編譯,因為這邊 y 是可能為 none 的 Option<i8>
4. enum可以單獨持有值
以下讓 enum Coin 的 Quarter(25美分) 單獨取得 enum UsState 的數值
#[derive(Debug)]
enum UsState {
Alabama,
Alaska,
//

Links booklink

Contact Us: admin [ a t ] ucptt.com