Generics
https://doc.rust-lang.org/book/generics.html
T
(型)を指定する事で、色々と使えるテンプレート機能。
<T>
を明示的に指定せずとも、使えるのがスゴい。
struct Point<T> { x: T, y: T, } impl<T> Point<T> { fn swap(&mut self) { std::mem::swap(&mut self.x, &mut self.y); } } fn main() { let mut int_point = Point { x: 3, y: 2 }; let mut float_point = Point { x: 0.3, y: 0.2 }; // let mut error_point = Point { x: 3, y: 0.2 }; // xが整数なのに、yが小数で型が違うため、エラーになる。 println!("({}, {})", int_point.x, int_point.y); int_point.swap(); println!("({}, {})", int_point.x, int_point.y); println!("({}, {})", float_point.x, float_point.y); float_point.swap(); println!("({}, {})", float_point.x, float_point.y); }