How do I sort an array?

后端 未结 1 1472
南旧
南旧 2020-12-19 12:44

Why cannot I not sort an array as expected?

fn main() {
    let mut a = [1,3,2];
    let s = a.sort();
    println!(\"{:?}\", s);
}
相关标签:
1条回答
  • 2020-12-19 13:08

    a is sorted, but the method sorts the array in place. Read the signature of sort: sort takes &mut self and returns unit (i.e. nothing), so when you print s, you print ().

    Working code:

    fn main() {
        let mut a = [1, 3, 2];
        a.sort();
        
        assert_eq!(a, [1, 2, 3]);
        println!("{:?}", a);
    }
    

    Writing a function that returns a sorted array

    You can write a function that does what you want:

    fn sort<A, T>(mut array: A) -> A
    where
        A: AsMut<[T]>,
        T: Ord,
    {
        let slice = array.as_mut();
        slice.sort();
    
        array
    }
    
    fn main() {
        let a = [1, 3, 2];
    
        assert_eq!(sort(a), [1, 2, 3]);
    }
    
    0 讨论(0)
提交回复
热议问题