turbo_tasks/
macro_helpers.rs1pub use async_trait::async_trait;
4pub use once_cell::sync::{Lazy, OnceCell};
5pub use serde;
6pub use shrink_to_fit;
7pub use tracing;
8
9use crate::{
10 NonLocalValue, RawVc, TaskInput, TaskPersistence, Vc, debug::ValueDebugFormatString,
11 task::TaskOutput,
12};
13pub use crate::{
14 magic_any::MagicAny,
15 manager::{find_cell_by_type, notify_scheduled_tasks, spawn_detached_for_testing},
16 native_function::{FunctionMeta, NativeFunction, downcast_args_owned, downcast_args_ref},
17};
18
19#[inline(never)]
20pub async fn value_debug_format_field(value: ValueDebugFormatString<'_>) -> String {
21 match value.try_to_value_debug_string().await {
22 Ok(result) => match result.await {
23 Ok(result) => result.to_string(),
24 Err(err) => format!("{err:?}"),
25 },
26 Err(err) => format!("{err:?}"),
27 }
28}
29
30pub fn get_non_local_persistence_from_inputs(inputs: &impl TaskInput) -> TaskPersistence {
31 if inputs.is_transient() {
32 TaskPersistence::Transient
33 } else {
34 TaskPersistence::Persistent
35 }
36}
37
38pub fn get_non_local_persistence_from_inputs_and_this(
39 this: RawVc,
40 inputs: &impl TaskInput,
41) -> TaskPersistence {
42 if this.is_transient() || inputs.is_transient() {
43 TaskPersistence::Transient
44 } else {
45 TaskPersistence::Persistent
46 }
47}
48
49pub fn assert_returns_non_local_value<ReturnType, Rv>()
50where
51 ReturnType: TaskOutput<Return = Vc<Rv>>,
52 Rv: NonLocalValue + Send,
53{
54}
55
56pub fn assert_argument_is_non_local_value<Argument: NonLocalValue>() {}
57
58#[macro_export]
59macro_rules! stringify_path {
60 ($path:path) => {
61 stringify!($path)
62 };
63}