用于 AppKit (macOS) 和 UIKit (iOS/tvOS) 的 Rust 绑定。实验性,但已运行!
AppKit (测试质量, 可使用) 和 iOS / tvOS 上的 UIKit (测试质量, 请参阅仓库) 提供了安全的 Rust 绑定。它尝试以一种方式来实现此功能,如果您之前对框架进行过编程(使用 Swift 或 Objective-C),将会感到熟悉。由于 Rust 中的所有权模型,这很棘手,但通过一些创造性的编码和假设,我们可以取得很大的进展。这个库在 crates.io 上存在,部分是为了让项目得到更广泛的使用,从而为开发提供信息。不过,这个库目前还处于早期阶段,可能存在 bug,您对其的使用须自行承担风险。不过,如果您遵循相关规则(有关内存/所有权),它已经适用于一些应用程序了。核心仓库提供了大量示例,可帮助您快速入门。
重要提示
如果您从 0.2 迁移到 0.3,则应在
Cargo.toml中选择appkit或uikit作为特性。此更改是为了支持不仅仅是 macOS/iOS/tvOS 的平台(例如 gnustep、airyx)。其中一个特性是必需的,以便正常工作;为了方便开发,默认使用appkit。
请注意,此 crate 依赖 Objective-C 运行时。与运行时进行接口 需要 不安全的代码块;此 crate 会为您处理这些不安全的交互,并提供一个安全的包装器,但使用此 crate 表示您理解
unsafe的使用是必需的,并且会在封装的控件中广泛使用。这 并不 意味着您无法评估、审查或质疑不安全的使用 - 只需了解它正在发生,而且在很大程度上不会消失。与不安全的存在本身相关的问题将会在不作评论的情况下关闭。
如果您希望在本地机器上构建此文档,由于特性标志与 cargo doc 相关的方式,您需要以下内容:
RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features --open
使用 cacao::appkit::{App, AppDelegate};
使用 cacao::appkit::window::Window;
#[derive(Default)]
struct BasicApp {
窗口: 窗口
}
class AppDelegate for BasicApp {
fn did_finish_launching(&self) {
self.window.set_minimum_content_size(400., 400.);
self.window.set_title("Hello")暂无开放 Issues,或尚未同步最近议题。