Traits

A trait defines a set of required methods — an interface.

trait Greetable {
    fn greet() -> str
}

Traits describe behavior, not data.

Implementing a trait

Use impl Trait for Struct:

impl Greetable for Person {
    fn greet() -> str {
        return "Hi, ${self.name}!"
    }
}

A struct may implement many traits.

Using traits as types

Traits can be used as parameter or variable types:

fn sayHello(entity: Greetable) {
    print(entity.greet())
}

sayHello(alice)

This enables polymorphism without inheritance.

Last updated on