rust vec排序

一、sort

        let mut v = vec![4,3,3,1,2];
        println!("{:#?}",v);
        v.sort(); 
        println!("{:#?}",v);

结果:

// 排序前结果
[
    4,
    3,
    3,
    1,
    2,
]
// 排序后结果
[
    1,
    2,
    3,
    3,
    4,
]

二、sort_by

// 结构体
#[derive(Debug)]
pub struct Preson{
    name: String,
    age: i64,
    gender: String,
}
        // 排序代码
        let mut v = Vec::new();
        let p1 = Preson{
            name: "hh1".to_string(),
            age: 18,
            gender: "men".to_string(),
        };
        let p2 = Preson{
            name: "hh2".to_string(),
            age: 16,
            gender: "women".to_string(),
        };
        let p3 = Preson{
            name: "hh3".to_string(),
            age: 15,
            gender: "men".to_string(),
        };
        let p4 = Preson{
            name: "hh4".to_string(),
            age: 17,
            gender: "women".to_string(),
        };

        v.push(p1);
        v.push(p2);
        v.push(p3);
        v.push(p4);
        println!("{:#?}",v);
        v.sort_by(|v1, v2| v1.age.cmp(&v2.age));
        println!("{:#?}",v);

结果:

[
    Preson {
        name: "hh1",
        age: 18,
        gender: "men",
    },
    Preson {
        name: "hh2",
        age: 16,
        gender: "women",
    },
    Preson {
        name: "hh3",
        age: 15,
        gender: "men",
    },
    Preson {
        name: "hh4",
        age: 17,
        gender: "women",
    },
]
[
    Preson {
        name: "hh3",
        age: 15,
        gender: "men",
    },
    Preson {
        name: "hh2",
        age: 16,
        gender: "women",
    },
    Preson {
        name: "hh4",
        age: 17,
        gender: "women",
    },
    Preson {
        name: "hh1",
        age: 18,
        gender: "men",
    },
]
原文地址:https://www.cnblogs.com/hziwei/p/15714085.html