feat: core tests passing

This commit is contained in:
Jonathan Kelley committed 2022-12-05 14:16:54 -08:00
1 parent b0cccce60a
commit e22923eb2d
15 files changed
+107 -122

No files matched your search

+2 -6
View File
@@ -2,16 +2,12 @@ use dioxus_core::ScopeState;
/// Consume some context in the tree
pub fn use_context<T: 'static>(cx: &ScopeState) -> Option<&T> {
match *cx.use_hook(|| cx.consume_context::<T>().map(|t| t as *const T)) {
Some(res) => Some(unsafe { &*res }),
None => None,
}
cx.use_hook(|| cx.consume_context::<T>()).as_deref()
}
/// Provide some context via the tree and return a reference to it
///
/// Once the context has been provided, it is immutable. Mutations should be done via interior mutability.
pub fn use_context_provider<T: 'static>(cx: &ScopeState, f: impl FnOnce() -> T) -> &T {
let ptr = *cx.use_hook(|| cx.provide_context(f()) as *const T);
unsafe { &*ptr }
cx.use_hook(|| cx.provide_context(f()))
}