Rust-Crates

config-ctdra (1.0.6)

Published 2026-09-13 12:46:47 +00:00 by Gitea-Bot in Rust-Crates/config

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 = true
cargo add config-ctdra@1.0.6

About 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>.toml abgelegt.
    • Benutzermodus: Standardmäßiges Benutzerverzeichnis (z. B. ~/.config/<programmname>/<config_name>.toml via confy).
    • Individuell anpassbar: Dateinamen (set_config_name), Verzeichnisse (set_custom_dir) oder explizite Dateipfade (set_custom_path). Der Programmname wird automatisch über program-ctdra ermittelt.
  • Globales Caching (get_config::<T>()): Einmaliges Laden und threadsicheres Zwischenspeichern statischer Referenzen pro Konfigurationstyp.
  • Atomare Operationen: load, store, modify, modify_config fü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
Cargo
2026-09-13 12:46:47 +00:00
14
DragonSlayer_14
GPL-3.0-or-later
36 KiB
Assets (1)
Versions (5) View all
1.0.6 2026-09-13
1.0.5 2026-09-12
1.0.4 2026-08-26
1.0.3 2026-08-26
1.0.2 2026-08-26