macro_rules! AsyncResource { ( ( $( $input_name:ident : $input_type:ty = $input:expr ),* ) -> $output:ty $fetcher:block ) => {{ async fn fetcher($($input_name : $input_type),*) -> $output $fetcher leptos::prelude::LocalResource::new(move || fetcher($($input),*)) }} } pub(crate) use AsyncResource; macro_rules! AsyncFetch { ( @map_error_in_producer fetcher = $fetcher:expr, producer = $producer:expr $(,)? ) => {{ AsyncFetch! { @map_error_in_producer from_resource = leptos::prelude::LocalResource::new(move || $fetcher), producer = $producer } }}; ( @map_error_in_producer from_resource = $resource:expr, producer = $producer:expr $(,)? ) => {{ use leptos::prelude::{ElementChild, Suspend, Transition}; leptos::view! { "Loading..."

} }> {move || Suspend::new(async move { $resource .await .map($producer) })}
} }}; } pub(crate) use AsyncFetch;