snake_case used
fn some_thing() -> return_type {
// do something
}
struct StructName{
field: String,
some_thing: bool,
...
}
struct StructName(String, bool, ...);
{:?}
// 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)
}
}
// 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"
}
#[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 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
days[0];
days[1];
...
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
Some(T)
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