База Hintsage

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

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

Темы раздела

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

Практика

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

Разберите, какую операцию предотвращает Pin<Box<T>> для типа без Unpin и зачем это нужно. Рассмотрите код:

use std::marker::PhantomPinned;

struct Task {
    value: String,
    _pin: PhantomPinned,
}

fn main() {
    let pinned = Box::pin(Task {
        value: String::from("ready"),
        _pin: PhantomPinned,
    });

    // let moved: Task = *pinned;
    println!("{}", pinned.value);
}
Программирование RustВладение и заимствованиеRust-разработчик системного программного обеспечения

Перед вами функция, принимающая callback, который возвращает заимствование из своего аргумента. Объясните, какую гарантию здесь даёт for<'a>:

fn identity<'a>(value: &'a str) -> &'a str {
    value
}

fn apply(
    callback: impl for<'a> Fn(&'a str) -> &'a str,
    text: &str,
) -> &str {
    callback(text)
}

fn main() {
    let text = String::from("ready");
    println!("{}", apply(identity, &text));
}
Программирование RustВладение и заимствованиеРазработчик системного ПО на Rust

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