请帮我生成一段rust代码
时间: 2024-10-01 08:04:42 浏览: 54
当然可以,下面是一个简单的Rust程序示例,它定义了一个基础结构体`Person`,以及两个实现了这个结构体的衍生结构体`Student`和`Teacher`。我们还将创建一个多态函数`greet`,它可以接受任何实现了`Person`接口的对象。
```rust
// 定义基础结构体 Person
#[derive(Debug)]
struct Person {
name: String,
}
// 实现 Person 的衍生结构体 Student 和 Teacher
impl Person {
fn new(name: String) -> Self {
Person { name }
}
// 公共方法
fn greet(&self) {
println!("Hello, my name is {}.", self.name);
}
}
// 子结构体 Student 实现了 Person
#[derive(Debug)]
struct Student(Person);
impl Student {
fn study(&self) {
println!("I am studying hard.");
}
}
// 子结构体 Teacher 实现了 Person
#[derive(Debug)]
struct Teacher(Person);
impl Teacher {
fn teach(&self) {
println!("I am teaching a class.");
}
}
// 多态函数 greet_any
fn greet_any(person: &dyn Person) {
person.greet();
}
fn main() {
let student = Student::new("Alice".to_string());
let teacher = Teacher::new("Bob".to_string());
greet_any(&student); // 输出 "Hello, my name is Alice."
greet_any(&teacher); // 输出 "Hello, my name is Bob."
student.study(); // 输出 "I am studying hard."
teacher.teach(); // 输出 "I am teaching a class."
}
```
阅读全文