40 lines
601 B
Plaintext
40 lines
601 B
Plaintext
trait Speak {
|
|
String speak(self*);
|
|
}
|
|
|
|
struct Dog {
|
|
String name,
|
|
}
|
|
|
|
impl Speak for Dog {
|
|
String speak(self*) {
|
|
"woof"
|
|
}
|
|
}
|
|
|
|
pub void test_trait_impl() {
|
|
let d = Dog { name: "Rex" };
|
|
assert_eq!(d.speak(), "woof");
|
|
}
|
|
|
|
trait Greet : Speak {
|
|
String greet(self*);
|
|
}
|
|
|
|
impl Greet for Dog {
|
|
String greet(self*) {
|
|
"hello"
|
|
}
|
|
}
|
|
|
|
pub void test_trait_with_requirement() {
|
|
let d = Dog { name: "Buddy" };
|
|
assert_eq!(d.speak(), "woof");
|
|
assert_eq!(d.greet(), "hello");
|
|
}
|
|
|
|
pub void run_tests() {
|
|
test_trait_impl();
|
|
test_trait_with_requirement();
|
|
}
|