Функции области видимости Kotlin в Rust?

Изучая в данный момент Rust и Kotlin, мне интересно, может ли быть/реализовано в Rust что-то столь же аккуратное, как Scope-функции Kotlin (let, apply, run и т.д.)?

Не ответ, так как не уверен, что это актуально, но вы проверили lib.rs/tap?

Cerberus 11.07.2024 04:52

Кажется, это то, что я искал, да! Хотите превратить это в ответ?

NoBullsh1t 11.07.2024 14:12

Я проголосовал за то, чтобы возобновить эту урезанную версию вопроса сейчас. Это более важно. И ожидаемый ответ тоже будет коротким и хорошим.

Simson 11.07.2024 14:27
Почему Python в конце концов умрет
Почему Python в конце концов умрет
Последние 20 лет были действительно хорошими для Python. Он прошел путь от "просто языка сценариев" до основного языка, используемого для написания...
0
3
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, что функции области видимости Kotlin не имеют эквивалента в стандартной библиотеке Rust, но эта функциональность доступна через методы расширения из популярного контейнера Tap.

Методы Tap запускают замыкание по заданному значению и возвращают исходное значение:

use tap::Tap;

let b = make_a()
    .tap(|a| log!("The produced value was: {a}"))
    .into_b();

Методы Pipe запускают замыкание по заданному значению и возвращают новое значение:

use tap::Pipe;

let c = make_a()
    .pipe(|a| process_a_to_b(a))
    .pipe(|b| process_b_to_c(b));

В Rust нет различия между функциями области видимости Kotlin, использующими it и this, поскольку замыкания Rust имеют только именованные параметры (и захваченные переменные), неявных имен параметров или неявного -this нет.

Другие вопросы по теме