Preciso de ajuda para entender emprestado() e emprestado_e_atualização() ambos parecidos comigo.
#[tokio::main]
async fn main() {
use tokio::sync::watch;
use tokio::time::{Duration, sleep};
let (tx, mut rx) = watch::channel("hello");
let mut rx2 = tx.subscribe();
tokio::spawn(async move {
loop {
println!("{}! ", *rx2.borrow_and_update());
if rx.changed().await.is_err() {
break;
}
}
});
sleep(Duration::from_millis(1000)).await;
tx.send("world").unwrap();
sleep(Duration::from_millis(1000)).await;
}
este é o exemplo que estou usando e não consigo ver nenhuma diferença ao usar borrow()
and borrow_and_update()
.
Eu li os documentos que dizem que borrow_and_seen()
marcará o valor como visto, mas borrow
não.
alguém pode me ajudar a entender esses dois, dando um exemplo adequado.
Há uma seção dedicada na documentação sobre quando usar which :
Dar um exemplo que reproduza consistentemente o loop executado duas vezes é difícil porque depende de atingir consistentemente a condição de corrida.