База Hintsage

Программирование Rust

Язык Rust и безопасное системное программирование.

Темы раздела

Выберите подраздел

Практика

Вопросы: Программирование Rust

В библиотечном API проверьте, достаточно ли bound трейта для вызова clone у ассоциированного типа без повторения ограничения:

trait Container {
    type Item: Clone;
    fn item(&self) -> Self::Item;
}

fn duplicate<C: Container>(container: C) -> (C::Item, C::Item) {
    let value = container.item();
    (value.clone(), value)
}

Скомпилируется ли функция duplicate?

Программирование RustTraits и genericsРазработчик библиотек на Rust

Проверьте, скомпилируется ли вызов обобщённой функции для Box<dyn Describe>, и объясните результат.

trait Describe {
    fn describe(&self) -> &'static str;
}

struct Item;
impl Describe for Item {
    fn describe(&self) -> &'static str { "item" }
}

fn inspect<T: Describe>(value: T) {
    println!("{}", value.describe());
}

fn main() {
    let boxed: Box<dyn Describe> = Box::new(Item);
    inspect(boxed);
}
Программирование RustTraits и genericsRust-разработчик системного ПО

Определите результат вызовов: какой метод выбирается через точечный синтаксис, если у типа есть одноимённый inherent-метод и реализация трейта?

trait Render {
    fn draw(&self) -> &'static str;
}

struct Button;

impl Button {
    fn draw(&self) -> &'static str { "inherent" }
}

impl Render for Button {
    fn draw(&self) -> &'static str { "trait" }
}

fn main() {
    let button = Button;
    println!("{}", button.draw());
    println!("{}", Render::draw(&button));
}

При вызове метода с одинаковым именем из двух трейтов определите результат компиляции и способ явно выбрать реализацию.

trait Fast {
    fn run(&self) -> &'static str;
}

trait Safe {
    fn run(&self) -> &'static str;
}

struct Job;

impl Fast for Job {
    fn run(&self) -> &'static str { "fast" }
}

impl Safe for Job {
    fn run(&self) -> &'static str { "safe" }
}

fn main() {
    println!("{}", Job.run());
}
Программирование RustTraits и genericsРазработчик Rust среднего уровня

Показано 161180 из 348