config-ctdra (1.0.6)
Installation
[registry]
default = "gitea"
[registries.gitea]
index = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/" # Sparse index
# index = "https://gitea.creative-dragonslayer.de/Rust-Crates/_cargo-index.git" # Git
[net]
git-fetch-with-cli = truecargo add config-ctdra@1.0.6About this package
Einfache, threadsichere Konfigurationsverwaltung für Rust mit automatischer Pfadermittlung für Root- und Benutzermodus
Config (config-ctdra)
config-ctdra ist eine leichtgewichtige, threadsichere Konfigurationsverwaltungs-Crate für Rust mit automatischer Pfadermittlung für Root- und regulären Benutzermodus sowie Unterstützung für beliebige benutzerdefinierte Datenstrukturen.
Merkmale
- Frei definierbare Konfigurationsstrukturen: Beliebige Rust-Strukturen mit
serde(Serialize,Deserialize,Default). - Einheitliche Pfadauflösung:
- Root-Modus (Linux/Unix UID 0): Konfigurationsdateien werden unter
/etc/<programmname>/<config_name>.tomlabgelegt. - Benutzermodus: Standardmäßiges Benutzerverzeichnis (z. B.
~/.config/<programmname>/<config_name>.tomlviaconfy). - Individuell anpassbar: Dateinamen (
set_config_name), Verzeichnisse (set_custom_dir) oder explizite Dateipfade (set_custom_path). Der Programmname wird automatisch überprogram-ctdraermittelt.
- Root-Modus (Linux/Unix UID 0): Konfigurationsdateien werden unter
- Globales Caching (
get_config::<T>()): Einmaliges Laden und threadsicheres Zwischenspeichern statischer Referenzen pro Konfigurationstyp. - Atomare Operationen:
load,store,modify,modify_configfür konsistentes Laden, Bearbeiten und Speichern.
Installation
Aus der Gitea Cargo Package Registry
Füge die Gitea-Registry zu deiner ~/.cargo/config.toml hinzu:
[registries.gitea]
index = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/"
Füge anschließend die Abhängigkeit in deiner Cargo.toml ein:
[dependencies]
config-ctdra = { version = "1.0.1", registry = "gitea" }
Alternativ als Git- oder Pfad-Abhängigkeit:
[dependencies]
config-ctdra = { git = "https://gitea.creative-dragonslayer.de/Rust-Crates/config.git", branch = "main" }
# oder lokal:
# config-ctdra = { path = "../Config" }
Verwendung
1. Eigene Konfigurationsstruktur definieren
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct AppConfig {
pub general: General,
pub database: Database,
}
impl Default for AppConfig {
fn default() -> Self {
Self {
general: General::default(),
database: Database::default(),
}
}
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct General {
pub log_level: String,
pub workers: usize,
}
impl Default for General {
fn default() -> Self {
Self {
log_level: "info".to_string(),
workers: 4,
}
}
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Database {
pub url: String,
}
impl Default for Database {
fn default() -> Self {
Self {
url: "postgres://localhost/app".to_string(),
}
}
}
2. Globales Caching mit get_config
use config_ctdra::get_config;
fn main() {
let cfg = get_config::<AppConfig>();
println!("Log-Level: {}", cfg.general.log_level);
println!("DB URL: {}", cfg.database.url);
}
3. Konfiguration modifizieren
use config_ctdra::modify_config;
fn update_settings() {
modify_config::<AppConfig, _>(|cfg| {
cfg.general.workers = 8;
});
}
4. Manuelles Laden und Speichern
use config_ctdra::{load, store};
fn custom_workflow() -> Result<(), config_ctdra::ConfyError> {
let mut cfg: AppConfig = load()?;
cfg.general.log_level = "debug".to_string();
store(&cfg)?;
Ok(())
}
Entwicklung und Tests
# Überprüfen
cargo check --all-targets
# Tests ausführen
cargo test
# Release kompilieren
cargo build --release
# Crate paketieren
cargo package
Lizenz
Dieses Projekt ist unter der GNU General Public License v3.0 oder neuer lizenziert (GPL-3.0-or-later). Siehe LICENSE.
Dependencies
| ID | Version |
|---|---|
| confy | ^2.0.0 |
| program-ctdra | ^1.0.0 |
| serde | ^1.0.229 |
| sudo-ctdra | ^1.0.0 |
Details
2026-09-13 12:46:47 +00:00
Assets (1)
Versions (5)
View all
Cargo
14
DragonSlayer_14
GPL-3.0-or-later
36 KiB
config-ctdra-1.0.6.crate
36 KiB