😴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> // okLast updated
Was this helpful?