For those coming from the likes of C++ and C#, generics will be nothing new to you. It is typically represented as T
. It is used in the same way as a standard type. As T
doesn't actually have a type, it's known a polymorphic parameter.
There's a simple rule regarding generic types.
The types have to match—if we define T
as being f64
and attempt to assign a String
to it, the compiler will fail to build that code.
While T
is also (probably) the most commonly used letter for a generic type, in reality you can have any letter, or even words.
For example, this is perfectly acceptable code:
enum Result<Y, N> { Ok(Y), Err(N), }
Y
and N
do not need to be the same type either; therefore, Y
could be a String
and N
a bool
.
In practice, the following shows how the generic type works. Option
is provided as part of the standard library:
enum Option<T> { Some_Type(T), None } let varname: Option<f32> = Some_Type(3.1416f32);
Generics also provide another useful...