经过广泛的谷歌搜索和研究来源后,这是我想出的最短的内容:
let mut buf = [0u8; 200];
for elem in buf.iter_mut() {
*elem = 0;
}
Run Code Online (Sandbox Code Playgroud)
难道真的没有办法让它成为一句台词吗buf.set_all(0)?
难道真的没有办法让它成为一句台词吗
buf.set_all(0)?
当然你可以把它变成单行...
for elem in buf.iter_mut() { *elem = 0; }
Run Code Online (Sandbox Code Playgroud)
好吧,好吧...如果你经常这样做,你可以定义一个提供set_all方法的扩展特征。
trait SetAll {
type Elem;
fn set_all(&mut self, value: Self::Elem);
}
impl<T> SetAll for [T] where T: Clone {
type Elem = T;
fn set_all(&mut self, value: T) {
for e in self {
*e = value.clone();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但就仅使用标准库中的内容而言,有for_each(正如 Sven Marnach 所指出的):
buf.iter_mut().for_each(|x| *x = 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5760 次 |
| 最近记录: |