mirror of https://github.com/KaiserY/trpl-zh-cn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
561 B
28 lines
561 B
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();
|
|
}
|