-
Notifications
You must be signed in to change notification settings - Fork 0
18: Traits
Jacob Jensen edited this page Jul 1, 2019
·
3 revisions
Traits are similar to interfaces but are not types that are inherited.
A trait is used to share functionality between types that do not have inheritance etc.
They're also useful for types you do not control yourself but want to share functionality with.
A general naming convention for traits is to always have Trait as part of their name.
trait NAME
{
}Example:
trait BazTrait
{
fn baz();
}ref struct Foo
{
fn baz() { ... }
}
ref struct Bar
{
fn baz() { ... }
}
ref struct Boo
{
fn boo() { ... }
}fn callBaz(BazTrait bazTrait)
{
bazTrait.baz();
}var foo @= Foo;
var bar @= Bar;
var boo @= Boo;
callBaz(foo); // Ok.
callBaz(bar); // Ok.
callBaz(boo); // Error: The type 'Boo' does not satisfy the trait 'BazTrait'