Guards/Binding

Guards

매치에서 쓰이는 guard 는 filter 의 기능으로 사용할 수 있다.


fn main() {
	
	let pair = (3, 3);

	println!("the pair is {:?}", pair);

	match pair {
		(x, y) if x > y => println!("x is bigger than y "),
		(x, y) if x == y => println!("x is same as y"),
		_ => println!("x is smaller than y"),
	}

}

Binding

말 그대로 변수에 특정 value 를 @ 을 통해 바인딩 할 수 있다.


fn get_value() -> u32 {
	33
}
fn main() {
	// return 값이 u32 이기 때문에 u32 에 대한 모든 수를 매치 시켜줘야 한다. 말이 된다?
	match get_value() {
		n @ 1 ..=19 => println!("미성년"),
		n @ 20 ..=30 => println!("성인, 이립"),
		n @ 31 ..=40 => println!("어른, 불혹"),
		n @ 41 ..=50 => println!("지천명"),
		n @ 51 ..=60 => println!("이순"),
		n @ 61 ..=70 => println!("종심"),
		_ => println!("망구"),

	}
}