1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

//! An interface between fuchsia_async and the async-testing testloop.

#![deny(missing_docs)]

mod ffi;
pub use crate::ffi::async_test_subloop_t;
mod subloop;
use crate::subloop::SubloopExecutor;

use futures::Future;

/// Creates a new subloop with an executor running |fut|.
///
/// The returned pointer points to a valid `async_test_subloop_t` and
/// must be used according to this structure's contract.
/// (see `lib/async-testing/test_subloop.h`).
pub fn new_subloop<F>(fut: F) -> *mut async_test_subloop_t
where
    F: Future,
{
    ffi::new_subloop(SubloopExecutor::new(fut))
}