1 mod bindings {
2     wit_bindgen::generate!({
3         path: "../misc/component-async-tests/wit",
4         world: "closed-streams",
5         async: true,
6     });
7 
8     use super::Component;
9     export!(Component);
10 }
11 
12 use {
13     bindings::exports::local::local::closed::Guest,
14     wit_bindgen_rt::async_support::{self, FutureReader, StreamReader, StreamResult},
15 };
16 
17 struct Component;
18 
19 impl Guest for Component {
20     async fn read_stream(mut rx: StreamReader<u8>, expected: Vec<u8>) {
21         let (result, buf) = rx.read(Vec::with_capacity(expected.len())).await;
22         assert_eq!(result, StreamResult::Complete(expected.len()));
23         assert_eq!(buf, expected);
24     }
25 
26     async fn read_future(rx: FutureReader<u8>, expected: u8, _rx_ignored: FutureReader<u8>) {
27         assert_eq!(rx.await, expected);
28     }
29 
30     async fn read_future_post_return(
31         rx: FutureReader<u8>,
32         expected: u8,
33         _rx_ignored: FutureReader<u8>,
34     ) {
35         async_support::spawn(async move {
36             assert_eq!(rx.await, expected);
37         });
38     }
39 }
40 
41 // Unused function; required since this file is built as a `bin`:
42 fn main() {}
43