sycamore-state is a utility library for better state management using sycamore's reactive primitives
the main features of this crate are the State
derive macro and the Rc/Ref Collection signal types
currently for lifetime management this crate uses widely sycamore::reactive::create_signal_unsafe
if you think there are possible unsafe errors feel free to open an issue
```rust
pub struct MyState<'a> {
pub field1: String,
pub field2: u32,
#[state]
pub field3: MyInnerState<'a>,
#[state]
#[collection]
pub statecollection: Vec
pub struct MyInnerState<'a> { pub field_1: i64, #[collection] pub collection: Vec<&'a str> }
let refstate = RefMyState::new(cx, MyState {
field1: "mystring".into(),
field2: 5,
field3: MyInnerState {
field1: 20,
collection: vec!["my", "string", "collection"],
},
state_collection: Default::default()
});
```
```rust
pub struct RcMyState<'a> {
pub field1: RcSignal
pub struct RcMyInnerState<'a> {
pub field_1: RcSignal
pub struct RefMyState<'a, 'stateful> {
pub field1: &'stateful Signal
pub struct RefMyInnerState<'a, 'stateful> {
pub field_1: &'stateful Signal