Generics
TODO
Generic Structs
use std::fmt::Display; struct Point<T> { x: T, y: T, } impl<T> Point<T> { fn x(&self) -> &T { &self.x } } impl Point<f32> { // specify constraints on generic types fn distance_from_origin(&self) -> f32 { (self.x.powi(2) + self.y.powi(2)).sqrt() } } impl<T: Display + PartialOrd> Point<T> { // use Trait Bounds to Conditionally Implement Methods fn cmp_display(&self) { if self.x >= self.y { println!("The largest member is x = {}", self.x); } else { println!("The largest member is y = {}", self.y); } } } fn main() { let p = Point { x: 5, y: 10 }; println!("p.x = {}", p.x()); }
TODO: edit