feat: plug in bubbling
This commit is contained in:
1 parent
a95dead76d
commit
d84fc05386
10 files changed
+579
-522
No files matched your search
+39
-39
@@ -16,45 +16,45 @@ pub use usefuture::*;
|
||||
mod usesuspense;
|
||||
pub use usesuspense::*;
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! to_owned {
|
||||
($($es:ident),+) => {$(
|
||||
#[allow(unused_mut)]
|
||||
let mut $es = $es.to_owned();
|
||||
)*}
|
||||
}
|
||||
// #[macro_export]
|
||||
// macro_rules! to_owned {
|
||||
// ($($es:ident),+) => {$(
|
||||
// #[allow(unused_mut)]
|
||||
// let mut $es = $es.to_owned();
|
||||
// )*}
|
||||
// }
|
||||
|
||||
/// Calls `for_async` on the series of paramters.
|
||||
///
|
||||
/// If the type is Clone, then it will be cloned. However, if the type is not `clone`
|
||||
/// then it must have a `for_async` method for Rust to lower down into.
|
||||
///
|
||||
/// See: how use_state implements `for_async` but *not* through the trait.
|
||||
#[macro_export]
|
||||
macro_rules! for_async {
|
||||
($($es:ident),+) => {$(
|
||||
#[allow(unused_mut)]
|
||||
let mut $es = $es.for_async();
|
||||
)*}
|
||||
}
|
||||
// /// Calls `for_async` on the series of paramters.
|
||||
// ///
|
||||
// /// If the type is Clone, then it will be cloned. However, if the type is not `clone`
|
||||
// /// then it must have a `for_async` method for Rust to lower down into.
|
||||
// ///
|
||||
// /// See: how use_state implements `for_async` but *not* through the trait.
|
||||
// #[macro_export]
|
||||
// macro_rules! for_async {
|
||||
// ($($es:ident),+) => {$(
|
||||
// #[allow(unused_mut)]
|
||||
// let mut $es = $es.for_async();
|
||||
// )*}
|
||||
// }
|
||||
|
||||
/// This is a marker trait that uses decoherence.
|
||||
///
|
||||
/// It is *not* meant for hooks to actually implement, but rather defer to their
|
||||
/// underlying implementation if they *don't* implement the trait.
|
||||
///
|
||||
///
|
||||
pub trait AsyncHook {
|
||||
type Output;
|
||||
fn for_async(self) -> Self::Output;
|
||||
}
|
||||
// /// This is a marker trait that uses decoherence.
|
||||
// ///
|
||||
// /// It is *not* meant for hooks to actually implement, but rather defer to their
|
||||
// /// underlying implementation if they *don't* implement the trait.
|
||||
// ///
|
||||
// ///
|
||||
// pub trait AsyncHook {
|
||||
// type Output;
|
||||
// fn for_async(self) -> Self::Output;
|
||||
// }
|
||||
|
||||
impl<T> AsyncHook for T
|
||||
where
|
||||
T: ToOwned<Owned = T>,
|
||||
{
|
||||
type Output = T;
|
||||
fn for_async(self) -> Self::Output {
|
||||
self
|
||||
}
|
||||
}
|
||||
// impl<T> AsyncHook for T
|
||||
// where
|
||||
// T: ToOwned<Owned = T>,
|
||||
// {
|
||||
// type Output = T;
|
||||
// fn for_async(self) -> Self::Output {
|
||||
// self
|
||||
// }
|
||||
// }
|
||||
Reference in new issue
Block a user