给定下面的编译代码,
let alerts : Vec<Alert> = serde_json::from_value::<Vec<Alert>>(json)
.unwrap();
为什么添加.sort_by_key
会导致错误
生成错误的代码是,expected struct `Vec`, found `()`
let alerts : Vec<Alert> = serde_json::from_value::<Vec<Alert>>(json)
.unwrap()
.sort_by_key( |e| e.pub_millis );
来自Vec的文档:
pub fn sort_by_key<K, F>(&mut self, f: F) where
F: FnMut(&T) -> K,
K: Ord
这个函数没有返回值,而是对切片进行就地排序。因此,它不能作为链式函数使用,必须给它一个可变的值。如果您希望警报变量是不可变的,那么可以使用临时可变性习惯用法,使其可变的时间只够对其进行排序。https://rust-unofficial.github.io/patterns/idioms/temporary-mutability.html