book/listings/ch19-advanced-features/no-listing-02-impl-outlinep.../src/main.rs

28 lines
559 B
Rust

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));
}
}
// ANCHOR: here
struct Point {
x: i32,
y: i32,
}
impl OutlinePrint for Point {}
// ANCHOR_END: here
fn main() {
let p = Point { x: 1, y: 3 };
p.outline_print();
}