Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpGnIB 22 of 288 menu
◀ ▶

Блок методов для обобщения в 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.

Скажите, почему имя типа в блоке методов совпадает с именем у структуры.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить