My personal-knowledge-system, with deeply integrated task tracking and long term goal planning capabilities.
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: make automerge an optional dep of tree

+14 -10
+5 -2
crates/tree/Cargo.toml
··· 8 8 license.workspace = true 9 9 10 10 [dependencies] 11 - automerge = "0.7.4" 12 - autosurgeon = "0.10.1" 11 + automerge = {version = "0.7.4", optional = true} 12 + autosurgeon = {version = "0.10.1", optional = true} 13 13 serde.workspace = true 14 14 15 + 16 + [features] 17 + automerge = ["dep:automerge", "dep:autosurgeon"] 15 18 16 19 [lints.clippy] 17 20 pedantic = "deny"
+2 -4
crates/tree/src/lib.rs
··· 5 5 //! 6 6 //! TODO: add example usage 7 7 8 - use autosurgeon::{Hydrate, Reconcile}; 9 8 use serde::{Deserialize, Serialize}; 10 9 11 10 mod behaviors; ··· 32 31 pub use error::NodeIdError; 33 32 34 33 /// A Node Id 35 - #[derive( 36 - Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, Reconcile, Hydrate, 37 - )] 34 + #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] 35 + #[cfg_attr(feature = "automerge", derive(Reconcile, Hydrate))] 38 36 pub struct NodeId { 39 37 index: u32, 40 38 }
+2 -2
crates/tree/src/node.rs
··· 1 - use autosurgeon::{Hydrate, Reconcile}; 2 1 use serde::{Deserialize, Serialize}; 3 2 4 3 use crate::NodeId; 5 4 6 - #[derive(Debug, Serialize, Deserialize, Reconcile, Hydrate, Ord, Eq, PartialOrd)] 5 + #[derive(Debug, Serialize, Deserialize, Ord, Eq, PartialOrd)] 6 + #[cfg_attr(feature = "automerge", derive(Reconcile, Hydrate))] 7 7 pub struct Node<T> { 8 8 pub(crate) data: T, 9 9 pub(crate) parent: Option<NodeId>,
+5 -2
crates/tree/src/tree.rs
··· 1 1 use std::cmp::Ordering; 2 2 3 - use autosurgeon::{Hydrate, Reconcile}; 4 3 use serde::{Deserialize, Serialize}; 5 4 6 5 use crate::{ ··· 156 155 /// Any function that takes a `NodeId` can `panic`, but this should 157 156 /// only happen with improper `NodeId` management within `tree`, and 158 157 /// should have nothing to do with library user's code. 159 - #[derive(Debug, Serialize, Deserialize, Reconcile, Hydrate)] 158 + #[derive(Debug, Serialize, Deserialize)] 159 + #[cfg_attr( 160 + feature = "automerge", 161 + derive(autosurgeon::Reconcile, autosurgeon::Hydrate) 162 + )] 160 163 pub struct Tree<T> { 161 164 root: Option<NodeId>, 162 165 pub(crate) nodes: Vec<Option<Node<T>>>,