Hi !
I first used Generics back in the old C# days. Itβs a super cool feature. Letβs ask ChatGPT for a definition:
Generics in programming are a way to create classes and methods that work with multiple data types. They allow the programmer to define type parameters, which can be passed as arguments to methods, classes, and interfaces. This allows for the creation of reusable and efficient code, as a single implementation can work with different types. Generics help to eliminate the need for separate implementations for each data type.
ChatGPT: Describe generics in programming language in 4 lines.
Rust support generics, so we can define placeholders for structs, enums, methods and more.
A cool way to understand the use of Generics, is to work with a HashMap collection. A Hashmap has 2 generic types, one for the key and the 2nd one for the values.
We can create a HashMap collection to store names and ages, using a string datatype and an integer datatype.
let mut names_and_ages: HashMap<&str, i32> = HashMap::new();
names_and_ages.insert("Jeff the Squirrel", 2);
names_and_ages.insert("Ace the Puppy", 1);
names_and_ages.insert("Net the Cat", 4);
We can access the collection later and use it to print the values, with this output.
And this is the complete source code for this sample.
/* | |
Copyright (c) 2023 | |
Author : Bruno Capuano | |
Create Time : 2023 January | |
Change Log : | |
- Demos working with generics in Rust | |
The MIT License (MIT) | |
Permission is hereby granted, free of charge, to any person obtaining a copy | |
of this software and associated documentation files (the "Software"), to deal | |
in the Software without restriction, including without limitation the rights | |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
copies of the Software, and to permit persons to whom the Software is | |
furnished to do so, subject to the following conditions: | |
The above copyright notice and this permission notice shall be included in | |
all copies or substantial portions of the Software. | |
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
THE SOFTWARE. | |
*/ | |
use std::collections::HashMap; | |
fn main() { | |
let mut names_and_ages: HashMap<&str, i32> = HashMap::new(); | |
names_and_ages.insert("Jeff the Squirrel", 2); | |
names_and_ages.insert("Ace the Puppy", 1); | |
names_and_ages.insert("Net the Cat", 4); | |
// print the names and ages | |
for (name, age) in &names_and_ages { | |
println!("{} is {} years old", name, age); | |
} | |
} |
Super cool !
Happy coding!
Greetings
El Bruno
More posts in my blog ElBruno.com.
Top comments (0)