😴Generics
How to declare generic parameters
Generic parameters have the same syntax for classes/struct/interfaces and functions.
class MyOwnInsanelyFastList<T> {...}
func important_function<T>() {...}
The overall syntax is
[name]<[...[<generic name>: [where clause] [ = <default type>]]]>
Where clause
The where clause
is used as a way to make sure the correct generic has been passed. For example, let's imagine you are making a vector class that only what's T
to be a Sized
type. (all types implement Sized except those whose size is not known at compile time, for example, void
)
class MyVector<T: Sized> {...}
Here, snowball checks if the given generics implements
the given types.
let a: MyVector<void> // error: void doesn't implement "Sized"
let b: MyVector<i32> // ok
Last updated
Was this helpful?