1
0
Fork 0
firefox/third_party/rust/futures/tests/future_obj.rs
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

33 lines
680 B
Rust

use futures::future::{Future, FutureExt, FutureObj};
use futures::task::{Context, Poll};
use std::pin::Pin;
#[test]
fn dropping_does_not_segfault() {
FutureObj::new(async { String::new() }.boxed());
}
#[test]
fn dropping_drops_the_future() {
let mut times_dropped = 0;
struct Inc<'a>(&'a mut u32);
impl Future for Inc<'_> {
type Output = ();
fn poll(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<()> {
unimplemented!()
}
}
impl Drop for Inc<'_> {
fn drop(&mut self) {
*self.0 += 1;
}
}
FutureObj::new(Inc(&mut times_dropped).boxed());
assert_eq!(times_dropped, 1);
}