РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1055 of 1245 menu

Метод send

Метод send класса Sender отправляет значение в канал, созданный функцией channel. Параметром метод принимает значение, которое нужно передать принимающей стороне. Метод возвращает Result: вариант Ok при успешной отправке и вариант Err, если принимающая сторона уже была удалена. После успешной отправки метод потребляет значение, поэтому его нельзя использовать повторно.

Синтаксис

sender.send(value)

Пример

Давайте отправим число 12345 через канал и получим его на принимающей стороне:

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel(); tx.send(12345).unwrap(); let res = rx.recv().unwrap(); println!("{}", res); }

Результат выполнения кода:

12345

Пример

Давайте отправим строку "abcde" через канал и получим её на принимающей стороне:

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel(); tx.send("abcde").unwrap(); let res = rx.recv().unwrap(); println!("{}", res); }

Результат выполнения кода:

"abcde"

Пример

Давайте отправим несколько значений через канал в отдельном потоке и получим их на принимающей стороне:

use std::sync::mpsc::channel; use std::thread; fn main() { let (tx, rx) = channel(); thread::spawn(move || { tx.send(1).unwrap(); tx.send(2).unwrap(); tx.send(3).unwrap(); }); for res in rx.iter() { println!("{}", res); } }

Результат выполнения кода:

1 2 3

Пример

Давайте обработаем ошибку отправки, когда принимающая сторона уже удалена:

use std::sync::mpsc::channel; fn main() { let (tx, rx) = channel(); drop(rx); let res = tx.send(12345); println!("{:?}", res.is_err()); }

Результат выполнения кода:

true

Смотрите также

  • класс Sender,
    который представляет отправляющую сторону канала
  • метод recv,
    который принимает значение из канала
  • метод try_recv,
    который пытается принять значение без блокировки
  • функция channel,
    которая создаёт пару связанных Sender и Receiver
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить