diff options
Diffstat (limited to 'advanced/adv-traits/src')
| -rw-r--r-- | advanced/adv-traits/src/main.rs | 163 | 
1 files changed, 0 insertions, 163 deletions
| diff --git a/advanced/adv-traits/src/main.rs b/advanced/adv-traits/src/main.rs deleted file mode 100644 index 659883c..0000000 --- a/advanced/adv-traits/src/main.rs +++ /dev/null @@ -1,163 +0,0 @@ -//fn main() { -//    println!("Hello, world!"); -//} -// -//pub trait Iterator { -//    type Item; -// -//    fn next(&mut self) -> Option<Self::Item>; -//} -// -// -//#[derive(Debug, PartialEq)] -//struct Point { -//    x: i32, -//    y: i32, -//} -// -//impl Add for Point { -//    type Output = Point; -// -//    fn add(self, other: Point) -> Point { -//        Point { -//            x: self.x + other.x, -//            y: self.y + other.y, -//        } -//    } -//} - -//fn main() { -//    assert_eq!(Point { x: 1, y: 0 } + Point { x: 2, y: 3 }, -//               Point { x: 3, y: 3 }); -//    println!("Done."); -//} - -//trait Add<RHS=Self> { -//    type Output; -// -//    fn add(self, rhs: RHS) -> Self::Output; -//} - -//use std::ops::Add; -// -//struct Millimeters(u32); -//struct Meters(u32); -// -//impl Add<Meters> for Millimeters { -//    type Output = Millimeters; -// -//    fn add(self, other: Meters) -> Millimeters { -//        Millimeters(self.0 + (other.0 * 1000)) -//    } -//} - - -//trait Pilot { -//    fn fly(&self); -//} -// -//trait Wizard { -//    fn fly(&self); -//} -// -//struct Human; -// -//impl Pilot for Human { -//    fn fly(&self) { -//        println!("Because I was inverted."); -//    } -//} -// -//impl Wizard for Human { -//    fn fly(&self) { -//        println!("Fly, you fools."); -//    } -//} -// -//impl Human { -//    fn fly(&self) { -//        println!("*feels real loose like a long-neck goose*"); -//    } -//} -// -// -//trait Animal { -//    fn baby_name() -> String; -//} -// -//struct Dog; -// -//impl Dog { -//    fn baby_name() -> String { -//        String::from("Spot") -//    } -//} -// -//impl Animal for Dog { -//    fn baby_name() -> String { -//        String::from("puppy") -//    } -//} - - -//fn main() { -//    let person = Human; -//    person.fly(); -//    Pilot::fly(&person); -//    Wizard::fly(&person); -// -// -//    println!("A baby dog is called a {}", <Dog as Animal>::baby_name()); -// -// -//    println!("Done."); -//} -// - - -//use std::fmt; -// -//trait OutlinePrint: fmt::Display { -//    fn outline_print(&self) { -//        let output = self.to_string(); -//        let len = output.len(); -//        println!("{}", "*".repeat(len + 4)); -//        println!("*{}*", " ".repeat(len + 2)); -//        println!("* {} *", output); -//        println!("*{}*", " ".repeat(len + 2)); -//        println!("{}", "*".repeat(len + 4)); -//    } -//} -// -//struct Point {  -//    x: i32, -//    y: i32, -//} -// -//impl OutlinePrint for Point {} -// -//impl fmt::Display for Point { -//    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -//        write!(f, "({}, {})", self.x, self.y) -//    } -//} -// -//fn main() { -//    let point = Point { x: 5, y: 6 }; -//    point.outline_print(); -//} - -use std::fmt; - -struct Wrapper(Vec<String>); - -impl fmt::Display for Wrapper { -    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { -        write!(f, "[{}]", self.0.join(", ")) -    } -} - -fn main() { -    let w = Wrapper(vec![String::from("hello"), String::from("world")]); -    println!("w = {}", w); -} |