Expand description
§TurboVault Core
Core data models, error types, and configuration for the Obsidian vault management system. This crate defines the canonical types that all other crates depend on.
§Architecture Principles
- No External Crate Dependencies Beyond Serialization: Only serde + basic Rust stdlib
- Type-Driven Design: Strong types replace string-based APIs
- Zero Panic in Libraries: All errors are Result<T, ObsidianError>
- Builder Pattern for Complex Types: Configuration structs use builders
- Immutable by Default: Mutation through explicit methods only
§Core Modules
models- Core vault data types (VaultFile, Link, Frontmatter, etc.)error- Comprehensive error types and Result aliasesconfig- Server and vault configuration structuresvalidation- Content validation frameworkmetrics- Performance monitoring and statisticsmulti_vault- Multi-vault management supportprofiles- Configuration profiles for different environmentsutils- Utility functions and builders
§Usage Examples
§Working with Vault Files
use turbovault_core::prelude::*;
use std::path::PathBuf;
// Create a vault file metadata
let metadata = FileMetadata {
path: PathBuf::from("my-note.md"),
size: 1024,
created_at: 0.0,
modified_at: 1234567890.0,
checksum: "abc123".to_string(),
is_attachment: false,
};§Error Handling
use turbovault_core::prelude::*;
use std::path::PathBuf;
fn process_vault() -> Result<()> {
// All operations return Result<T>
let _path = PathBuf::from("vault.md");
// Error handling with type-safe error variants
let _err = Error::parse_error("Invalid markdown content");
Ok(())
}§Configuration
use turbovault_core::prelude::*;
let config = ServerConfig::default();
// Access configuration properties safely
let _config_has_vaults = !config.vaults.is_empty();§Type Safety
The core types use enums and strong types instead of strings:
Re-exports§
pub use error::Error;pub use error::Result;pub use metrics::Counter;pub use metrics::Histogram;pub use metrics::HistogramStats;pub use metrics::HistogramTimer;pub use metrics::MetricsContext;pub use multi_vault::MultiVaultManager;pub use multi_vault::VaultInfo;pub use profiles::ConfigProfile;pub use utils::CSVBuilder;pub use utils::PathValidator;pub use utils::TransactionBuilder;pub use utils::to_json_string;pub use validation::CompositeValidator;pub use validation::ContentValidator;pub use validation::FrontmatterValidator;pub use validation::LinkValidator;pub use validation::Severity;pub use validation::ValidationIssue;pub use validation::ValidationReport;pub use validation::ValidationSummary;pub use validation::Validator;pub use config::*;pub use models::*;
Modules§
- cache
- Cross-platform persistent cache for vault configuration and state
- config
- Configuration types for the Obsidian server.
- error
- Error types for the Obsidian system.
- metrics
- Lock-free metrics infrastructure for high-performance observability
- models
- Core data models representing Obsidian vault elements.
- multi_
vault - Multi-vault management system for enterprise deployments
- prelude
- Re-export commonly used types
- profiles
- Pre-configured profiles for different deployment scenarios
- resilience
- Resilience patterns: retry logic, circuit breakers, graceful degradation
- utils
- Shared utilities for operations across turbovault crates.
- validation
- Content validation system.