Generics
[generics.incl: fix (P1)](https://github.com/john-cd/rust_howto/issues/544)
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()); }
[generics: edit (P1)](https://github.com/john-cd/rust_howto/issues/545)