trait Sized {
fn size(self): int;
}
class File implements Sized {
fn size(self): int -> { ... }
}
Without generics:
fn getSize(object: ref Sized) -> { ... }
With generics:
fn getSize[T: Sized](object: ref T) -> { ... }
Allow traits to be combined with +, e.g. for traits Sized and Addable - Sized + Addable
Save implemented traits in Class. Check if they are indeed implemented after class definition.
Maybe expose implemented traits as __traits__ field in Class.
Save required traits for generic type.
Think of a better mechanism than implements keyword.
Example:
Without generics:
With generics:
Allow traits to be combined with
+
, e.g. for traitsSized
andAddable
-Sized + Addable
Save implemented traits in
Class
. Check if they are indeed implemented afterclass
definition. Maybe expose implemented traits as__traits__
field inClass
. Save required traits for generic type. Think of a better mechanism thanimplements
keyword.