From 55af4a5f116a4434f4361986ae79be488063857b Mon Sep 17 00:00:00 2001 From: Filipe Rodrigues Date: Sat, 28 Dec 2024 07:17:18 +0000 Subject: [PATCH] Moved `AsyncSignal` into it's own crate. --- Cargo.lock | 18 +++++++++++++ Cargo.toml | 2 ++ dynatos-loadable/Cargo.toml | 7 ++++- dynatos-loadable/src/loadable_signal.rs | 3 ++- dynatos-reactive-async/Cargo.toml | 27 +++++++++++++++++++ .../src/async_signal.rs | 2 +- dynatos-reactive-async/src/lib.rs | 22 +++++++++++++++ .../tests/async_signal.rs | 2 +- dynatos-reactive/src/lib.rs | 2 -- 9 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 dynatos-reactive-async/Cargo.toml rename {dynatos-reactive => dynatos-reactive-async}/src/async_signal.rs (99%) create mode 100644 dynatos-reactive-async/src/lib.rs rename {dynatos-reactive => dynatos-reactive-async}/tests/async_signal.rs (99%) diff --git a/Cargo.lock b/Cargo.lock index 7543a77..67402ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -201,6 +201,7 @@ dependencies = [ "anyhow", "duplicate", "dynatos-reactive", + "dynatos-reactive-async", "dynatos-reactive-sync", "dynatos-util", "extend", @@ -223,6 +224,23 @@ dependencies = [ "zutil-cloned", ] +[[package]] +name = "dynatos-reactive-async" +version = "0.1.0" +dependencies = [ + "duplicate", + "dynatos-context", + "dynatos-reactive", + "dynatos-reactive-sync", + "dynatos-util", + "extend", + "itertools", + "pin-project", + "scopeguard", + "tracing", + "zutil-cloned", +] + [[package]] name = "dynatos-reactive-sync" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 9aa2eb3..5f79d60 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,6 +11,7 @@ members = [ "dynatos-html-parser", "dynatos-loadable", "dynatos-reactive", + "dynatos-reactive-async", "dynatos-reactive-sync", "dynatos-router", "dynatos-title", @@ -31,6 +32,7 @@ dynatos-html-macros = { path = "dynatos-html-macros" } dynatos-html-parser = { path = "dynatos-html-parser" } dynatos-loadable = { path = "dynatos-loadable" } dynatos-reactive = { path = "dynatos-reactive" } +dynatos-reactive-async = { path = "dynatos-reactive-async" } dynatos-reactive-sync = { path = "dynatos-reactive-sync" } dynatos-router = { path = "dynatos-router" } dynatos-title = { path = "dynatos-title" } diff --git a/dynatos-loadable/Cargo.toml b/dynatos-loadable/Cargo.toml index e311276..3e95ed1 100644 --- a/dynatos-loadable/Cargo.toml +++ b/dynatos-loadable/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" [dependencies] dynatos-reactive = { workspace = true } +dynatos-reactive-async = { workspace = true } dynatos-reactive-sync = { workspace = true } dynatos-util = { workspace = true } @@ -18,4 +19,8 @@ tracing = { workspace = true } workspace = true [features] -sync = ["dynatos-reactive-sync/sync"] +sync = [ + "dynatos-reactive/sync", + "dynatos-reactive-async/sync", + "dynatos-reactive-sync/sync", +] diff --git a/dynatos-loadable/src/loadable_signal.rs b/dynatos-loadable/src/loadable_signal.rs index 4a84c3b..dd91031 100644 --- a/dynatos-loadable/src/loadable_signal.rs +++ b/dynatos-loadable/src/loadable_signal.rs @@ -4,7 +4,8 @@ use { crate::Loadable, core::{fmt, ops::Deref}, - dynatos_reactive::{async_signal, AsyncSignal, SignalBorrow, SignalWith}, + dynatos_reactive::{SignalBorrow, SignalWith}, + dynatos_reactive_async::{async_signal, AsyncSignal}, }; /// Loadable signal. diff --git a/dynatos-reactive-async/Cargo.toml b/dynatos-reactive-async/Cargo.toml new file mode 100644 index 0000000..5bc6ca3 --- /dev/null +++ b/dynatos-reactive-async/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "dynatos-reactive-async" +version = "0.1.0" +edition = "2021" + +[dependencies] + +dynatos-context = { workspace = true } +dynatos-reactive = { workspace = true } +dynatos-reactive-sync = { workspace = true } +dynatos-util = { workspace = true } + +duplicate = { workspace = true } +extend = { workspace = true } +itertools = { workspace = true } +pin-project = { workspace = true } +scopeguard = { workspace = true } +tracing = { workspace = true } + +[dev-dependencies] +zutil-cloned = { workspace = true } + +[lints] +workspace = true + +[features] +sync = ["dynatos-reactive/sync", "dynatos-reactive-sync/sync"] diff --git a/dynatos-reactive/src/async_signal.rs b/dynatos-reactive-async/src/async_signal.rs similarity index 99% rename from dynatos-reactive/src/async_signal.rs rename to dynatos-reactive-async/src/async_signal.rs index 360f8b8..67e5870 100644 --- a/dynatos-reactive/src/async_signal.rs +++ b/dynatos-reactive-async/src/async_signal.rs @@ -5,7 +5,6 @@ // Imports use { - crate::{SignalBorrow, SignalWith, Trigger}, core::{ fmt, future::{self, Future}, @@ -15,6 +14,7 @@ use { pin::Pin, task::{self, Poll}, }, + dynatos_reactive::{SignalBorrow, SignalWith, Trigger}, dynatos_reactive_sync::{IMut, IMutExt, IMutRef, IMutRefMut, IMutRefMutExt, Rc}, }; diff --git a/dynatos-reactive-async/src/lib.rs b/dynatos-reactive-async/src/lib.rs new file mode 100644 index 0000000..8f4209f --- /dev/null +++ b/dynatos-reactive-async/src/lib.rs @@ -0,0 +1,22 @@ +//! Asynchronous reactivity for `dynatos` + +// Features +#![feature( + unsize, + coerce_unsized, + unboxed_closures, + fn_traits, + test, + thread_local, + cfg_match, + trait_alias, + once_cell_try, + async_fn_traits, + local_waker +)] + +// Modules +pub mod async_signal; + +// Exports +pub use self::async_signal::AsyncSignal; diff --git a/dynatos-reactive/tests/async_signal.rs b/dynatos-reactive-async/tests/async_signal.rs similarity index 99% rename from dynatos-reactive/tests/async_signal.rs rename to dynatos-reactive-async/tests/async_signal.rs index 55deef3..1b9a3bd 100644 --- a/dynatos-reactive/tests/async_signal.rs +++ b/dynatos-reactive-async/tests/async_signal.rs @@ -23,7 +23,7 @@ use { sync::atomic::{self, AtomicUsize}, task::{self, Poll}, }, - dynatos_reactive::AsyncSignal, + dynatos_reactive_async::AsyncSignal, zutil_cloned::cloned, }; diff --git a/dynatos-reactive/src/lib.rs b/dynatos-reactive/src/lib.rs index 3884448..be50895 100644 --- a/dynatos-reactive/src/lib.rs +++ b/dynatos-reactive/src/lib.rs @@ -16,7 +16,6 @@ )] // Modules -pub mod async_signal; pub mod derived; pub mod effect; pub mod memo; @@ -26,7 +25,6 @@ pub mod with_default; // Exports pub use self::{ - async_signal::AsyncSignal, derived::Derived, effect::{Effect, WeakEffect}, memo::Memo,