作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
为什么我必须在 impl Keys
的 destruct
方法中使用 ref s
而不仅仅是 s
?
#[derive(Debug)]
enum Direction {
Up(Point),
Down(Point),
Right(Point),
Left(Point),
}
#[derive(Debug)]
struct Point {
x: u32,
y: u32,
}
#[derive(Debug)]
enum Keys {
Up_key(String),
Down_key(String),
Right_key(String),
Left_key(String),
}
impl Direction {
fn match_direction(&self) -> Keys {
match *self {
Direction::Up(_) => Keys::Up_key(String::from("Up key is pressed")),
Direction::Down(_) => Keys::Down_key(String::from("Down key is pressed")),
Direction::Right(_) => Keys::Right_key(String::from("Right key is pressed")),
Direction::Left(_) => Keys::Left_key(String::from("Left key is pressed")),
}
}
}
impl Keys {
fn destruct(&self) -> &String {
match *self {
Keys::Up_key(ref s) => s,
Keys::Down_key(ref s) => s,
Keys::Left_key(ref s) => s,
Keys::Right_key(ref s) => s,
}
}
}
fn main() {
let test_1 = Direction::Right(Point { x: 1, y: 0 });
let x = test_1.match_direction();
println!("{:#?}", x);
let k = x.destruct();
println!("{}", k);
}
输出:
Right_key(
"Right key is pressed",
)
Right key is pressed
我是一名优秀的程序员,十分优秀!