#wayland #codegen #bindings-generator #client-server #api-bindings

wayland-scanner

用于从 Wayland XML 协议文件生成 Rust API 的 Wayland 扫描仪

143 个版本

0.31.4 2024 年 7 月 16 日
0.31.2 2024 年 5 月 31 日
0.31.1 2024 年 1 月 29 日
0.31.0 2023 年 9 月 2 日
0.2.0 2015 年 11 月 19 日

GUI 中排名第 1079

Download history 108501/week @ 2024-05-01 106502/week @ 2024-05-08 113490/week @ 2024-05-15 108654/week @ 2024-05-22 114678/week @ 2024-05-29 124447/week @ 2024-06-05 124370/week @ 2024-06-12 117746/week @ 2024-06-19 117335/week @ 2024-06-26 105623/week @ 2024-07-03 116548/week @ 2024-07-10 119358/week @ 2024-07-17 115326/week @ 2024-07-24 111133/week @ 2024-07-31 134866/week @ 2024-08-07 112433/week @ 2024-08-14

每月下载量 497,491
用于 1,432 个 Crates(17 个直接使用)

MIT 许可证

97KB
2.5K SLoC

crates.io docs.rs Continuous Integration codecov

wayland-scanner

此 crate 提供用于生成与 Wayland XML 协议规范关联的 Rust 代码的过程宏,用于与 wayland-clientwayland-serverwayland-backend Crates 一起使用。

在尝试使用此 crate 之前,您可能需要检查您想要使用的协议扩展是否已经在 wayland-protocols crate 中公开。


lib.rs:

Wayland 协议代码生成机制

此 crate 提供用于生成与 Wayland XML 协议规范关联的 Rust 代码的过程宏,用于与 wayland-clientwayland-serverwayland-backend Crates 一起使用。

在尝试使用此 crate 之前,您可能需要检查您想要使用的协议扩展是否已经在 wayland-protocols crate 中公开。

示例用法

以下是一个用于生成自定义协议客户端代码的模板。服务器端相同,只需将 client 替换为 server。XML 文件的路径是相对于 crate 根目录的。

// Generate the bindings in their own module
pub mod my_protocol {
    use wayland_client;
    // import objects from the core protocol if needed
    use wayland_client::protocol::*;

    // This module hosts a low-level representation of the protocol objects
    // you will not need to interact with it yourself, but the code generated
    // by the generate_client_code! macro will use it
    pub mod __interfaces {
        // import the interfaces from the core protocol if needed
        use wayland_client::protocol::__interfaces::*;
        wayland_scanner::generate_interfaces!("./path/to/the/protocol.xml");
    }
    use self::__interfaces::*;

    // This macro generates the actual types that represent the wayland objects of
    // your custom protocol
    wayland_scanner::generate_client_code!("./path/to/the/protocol.xml");
}

依赖项

~1.5MB
~23K SLoC