fn main() {
    let dict = RecordSet{
        data : vec![Record{id : 1, name : "hp".to_string()}, Record{id : 2, name : "dell".to_string()},],
    };
    println!("{:?}", get_name(&dict, 1));
    println!("{:?}", get_name(&dict, 2));
    println!("{:?}", get_name(&dict, 3));

    
}

trait Dictionary<Key> {
    fn get(&self, key : Key) -> Option<String>;
}

struct Record{
    id : u32,
    name : String,
}

struct RecordSet{
    data : Vec<Record>,
}

fn get_name<D>(dictionary : &D, key : u32) -> Option<String>
where D : Dictionary<u32>{
    dictionary.get(key)
}

impl Dictionary<u32> for RecordSet{
    fn get(&self, key : u32) -> Option<String>{
        for record in self.data.iter(){
            if record.id == key {
                return Some(String::from(&record.name))
            }
        }
        None
    }
}





Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: