ExpertiDict

Rust · Avançado · Inglês · Técnico

cancel safety

/ˈkænsəl ˈseɪfti/substantivo

Propriedade de uma future que pode ser abandonada em um await, por exemplo dentro de select!, sem perder dados nem deixar o estado incoerente.

Onde usar

Aparece na documentação do tokio, que indica quais métodos são cancel safe. O recv de um canal é; ler parte de um buffer com read_exact não é.

Em código

use tokio::{select, time::{sleep, Duration}};
use tokio::sync::mpsc::Receiver;
async fn espera(mut rx: Receiver<u8>) {
  select! {
    m = rx.recv() => println!("{m:?}"),
    _ = sleep(Duration::from_secs(1)) => {}
  }
}

Exemplos

Is this branch cancel safe inside select?

Esse ramo é cancel safe dentro do select?

read_exact is not cancel safe, you may lose bytes.

O read_exact não é cancel safe, você pode perder bytes.

Cuidado

Cancelar uma future só a descarta no ponto do await; os efeitos já feitos antes dele permanecem.

Sinônimos

segurança a cancelamento

Veja também

Todos os termos de Rust