23个版本

0.2.1 2024年7月14日
0.2.0 2024年2月7日
0.1.20 2023年11月4日
0.1.18 2023年4月6日
0.1.11 2022年7月24日

134进程宏

Download history 173/week @ 2024-04-15 128/week @ 2024-04-22 141/week @ 2024-04-29 181/week @ 2024-05-06 197/week @ 2024-05-13 101/week @ 2024-05-20 111/week @ 2024-05-27 164/week @ 2024-06-03 124/week @ 2024-06-10 97/week @ 2024-06-17 96/week @ 2024-06-24 154/week @ 2024-07-01 197/week @ 2024-07-08 103/week @ 2024-07-15 106/week @ 2024-07-22 111/week @ 2024-07-29

521 每月下载量
regolith-powerd 中使用

MPL-2.0 许可证

47KB
888

GSettings宏

github crates.io docs CI

类型安全GSettings键访问宏

宏的主要目的是减少键名输入错误、使用错误的方法访问值、输入错误值和减少模板代码的风险。此外,每个生成方法的摘要、描述和默认值都包含在文档中。如果您使用像 rust-analyzer 这样的工具,这将非常有用。

示例

use gsettings_macro::gen_settings;
use gio::glib;

use std::path::{Path, PathBuf};

#[gen_settings(
    file = "./tests/io.github.seadve.test.gschema.xml",
    id = "io.github.seadve.test"
)]
#[gen_settings_define(
    key_name = "cache-dir",
    arg_type = "&Path",
    ret_type = "PathBuf"
)]
#[gen_settings_skip(signature = "(ss)")]
pub struct ApplicationSettings;

let settings = ApplicationSettings::default();

// `i` D-Bus type
settings.set_window_width(100);
assert_eq!(settings.window_width(), 100);

// enums
settings.set_alert_sound(AlertSound::Glass);
assert_eq!(settings.alert_sound(), AlertSound::Glass);

// bitflags
settings.set_space_style(SpaceStyle::BEFORE_COLON | SpaceStyle::BEFORE_COMMA);
assert_eq!(
    settings.space_style(),
    SpaceStyle::BEFORE_COLON | SpaceStyle::BEFORE_COMMA
);

// customly defined
settings.set_cache_dir(Path::new("/some_dir/"));
assert_eq!(settings.cache_dir(), PathBuf::from("/some_dir/"));

有关更多示例和详细信息,请参阅文档

此库在Mousai(音乐识别器)和Kooha(屏幕录制应用程序)中有实际应用示例。

生成的方法

进程宏为架构中的每个键生成以下gio::Settings方法

  • set -> ${key},在只读键中写入时引发恐慌,以及try_set_${key},其行为与原始方法相同。
  • get -> ${key}
  • connect_changed -> connect_${key}_changed
  • bind -> bind_${key}
  • create_action -> create_${key}_action
  • default_value -> ${key}_default_value
  • reset -> reset_${key}

已知问题

  • 当gschema文件被修改时不会更新

许可证

版权所有 2023 Dave Patrick Caberto

本软件受Mozilla公共许可证(MPL)2.0条款的约束。如果未随此文件分发MPL副本,您可以在此网站获得一份。

依赖项

~5MB
~92K SLoC