Упражнение
- Что, по мнению этих имён, делают эти методы?
- Какими должны быть имена для этих сигнатур?
// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0
// Какие типы у этих методов?
Option::is_some // ?
slice::get // ?
slice::get_unchecked_mut // ?
Option::as_ref // ?
str::from_utf8_unchecked_mut // ?
Rc::get_mut // ?
Vec::dedup_by_key // ?
// Как должны называться методы с такими типами?
fn ____(String) -> Self;
fn ____(&self) -> Option<&InnerType>; // детали InnerType не важны.
fn ____(self, String) -> Self;
fn ____(&mut self) -> Option<&mut InnerType>;
-
Пройдитесь вместе с классом по методам из примера и обсудите, каковы должны быть типы функций.
-
Пройдитесь по безымянным методам и придумайте, какие имена им следует дать.
Ответы для пропущенных типов:
-
Option::is_some(&self) -> bool -
slice::get(&self /* &[T] */, usize) -> Option<&T> -
slice::get_unchecked_mut(&self /* &[T] */, usize) -> &T(небезопасный и упрощённый) -
Option::as_ref(&self /* &Option<T> */) -> Option<&T> -
str::from_utf8_unchecked_mut(v: &mut [u8]) -> &mut str(небезопасный) -
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) -> Self -
fn inner(&self) -> Option<&InnerType>илиas_ref, в зависимости от контекста -
fn with_string(self, String) -> Self -
fn inner_mut(&mut self) -> Option<&mut InnerType>илиas_ref_mut, в зависимости от контекста
-