2.2.1.13 练习
13-练习 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
2.2.1.13 练习
- 这些名字暗示它们做什么?
- 这些签名该如何命名?
| |
与学员一起过一遍示例中的方法,讨论函数的类型应当是什么。
过一遍未命名的方法,头脑风暴这些方法应有什么名字。
缺失类型的答案:
Option::is_some(&self) -> boolslice::get(&self /* &[T] */, usize) -> Option<&T>slice::get_unchecked_mut(&self /* &[T] */, usize) -> &T(unsafe 且简化)Option::as_ref(&self /* &Option<T> */) -> Option<&T>str::from_utf8_unchecked_mut(v: &mut [u8]) -> &mut str(unsafe)Rc::get_mut(&mut self /* &mut Rc<T> */) -> Option<&mut T>(简化)Vec::dedup_by_key<K: PartialEq>(&mut self /* &mut Vec<T> */, key: impl FnMut(&mut T) -> K)(简化)缺失名字的答案:
fn from_string(String) -> Selffn inner(&self) -> Option<&InnerType>或as_ref,取决于语境fn with_string(self, String) -> Selffn inner_mut(&mut self) -> Option<&mut InnerType>或as_ref_mut, 取决于语境