Rust 정리

Rust 정리

naming convention

snake_case used

fn some_thing() -> return_type {
	// do something
}

struct define

classic struct
struct StructName{
    field: String,
    some_thing: bool,
    ...
}
tuple struct
struct StructName(String, bool, ...);

display, debug printing

// derive = 파생, 상속
#[derive(Debug)]
struct Struct {
    str: String,
    num: i64,
}
#[derive(Debug)]
struct Struct {
    str: String,
    num: i64,
}

// impl Display need #[derive(Debug)]
impl Display for Struct {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result{
        write!(f, "Struct({}, {})", self.str, self.num)
    }
} 

compare enum

// PartialEq => Enum == Enum
#[derive(PartialEq)]
enum Enum{
    Test(String)
}

fn main(){
    let enum_a = Enum::Test(String::from("test"));
    let enum_b = Enum::Test(String::from("test"));
    println!("{}", enum_a == enum_b); // print "true"
}

display enum as debug value

#[derive(PartialEq, Debug)]
enum Enum {
    Test(String)
}

fn main(){
    let enum_a = Enum::Test(String::from("test"));
    let enum_b = Enum::Test(String::from("test"));
    println!("{} == {} = {}", enum_a, enum_b, enum_a == enum_b)
}

declare array

declare with values [a, b, c, ...]

let days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];

declare with number of specific value [T; size]

let bytes = [0; 256]; // length : 256, all values : 0

access array with index

days[0];
days[1];
...

vec push, pop

vec.push or vec.pop need mut

let vec_a = vec![0, 1, 2];
let mut vec_b = vec![0, 1, 2];

vec_a.pop(); // error may occur
vec_b.pop(); // ok

export T from Some(T)

unwrap

// Because this function may panic, consider unwrap_*
let mut vec = vec![0, 1, 2, 3];
let popped = vec.pop();
println!("{:?}, {}", popped, popped.unwrap()); // Some(3), 3

unwrap_or

let mut vec = vec![0, 1, 2, 3];
let popped = vec.pop();
println!("{:?}, {}", popped, popped.unwrap_or(0)); // Some(3), 3
println!("{:?}, {}", popped, None.unwrap_or(0)); // Some(3), 0

Written by@[esllo]
plain developer

GitHubTwitterLinkedIn