Use generics to create definitions for items like function signatures or structs, which we can then use with many different concrete data types. Defined with <T>
Generics make programming easier without reducing runtime performance.
Generics uses process called Monomorphization where compiler replaces generic placeholders with data types.
struct Language<T, T1, T2>{
name: T,
stable_version: T1,
launched_year: T2
}
fn main{
let pro_langauge_rust = Language{
name: String::from("Rust"),
stable_version: 1.84,
launched_year: 2012
};
println!("Programming language is {:?}", pro_langauge_rust)
}
Output-
Programming language is Language { name: "Rust", stable_version: 1.84, launched_year: 2012 }
Gneneric Method
struct Language<T, T1, T2>{
name: T,
stable_version: T1,
launched_year: T2
}
//struct Color(u8,u8,u8);
impl<T,T1,T2> Language<T, T1, T2> {
fn get_name(&self) -> &T
{
&self.name
}
}
fn main {
let pro_langauge_rust = Language{
name: String::from("Rust"),
stable_version: 1.84,
launched_year: 2012
};
println!("Programming language is {:?}", pro_langauge_rust.get_name())
}
Ouput
Programming language is "Rust"