Блок методов для обобщения в Rust
Блок методов повторяет имя типа структуры.
После слова impl снова пишут параметры
типа, и методы внутри могут использовать
поля с этим именем. Так одна реализация
работает для любого подставленного вида.
Добавим функцию сборки для обертки:
struct Wrapper<T> {
value: T,
}
impl<T> Wrapper<T> {
fn new(value: T) -> Self {
Self { value }
}
}
fn main() {
let num = Wrapper::new(3);
let text = Wrapper::new(String::from("hi"));
println!("{} {}", num.value, text.value);
}
Метод с общей ссылкой тоже пишут в таком блоке, если нужно только прочитать поле:
struct Wrapper<T> {
value: T,
}
impl<T> Wrapper<T> {
fn new(value: T) -> Self {
Self { value }
}
fn get(&self) -> &T {
&self.value
}
}
fn main() {
let num = Wrapper::new(8);
let seen = num.get();
println!("{}", seen);
}
Дано число:
let size: i32 = 6;
Объявите обертку и блок с функцией new,
соберите значение из size и выведите
поле.
Дана переменная:
let name = String::from("ann");
Добавьте метод с общей ссылкой, который
возвращает ссылку на поле, и выведите
текст для обертки с name.
Скажите, почему имя типа в блоке методов совпадает с именем у структуры.