#objective-c #ios #cocoa #macos-ios #ui-kit #macos

无std objc-encode

在Rust中创建和解析Objective-C类型编码

5个版本 (2个稳定版)

1.1.0 2019年10月16日
1.0.0 2019年3月25日
0.0.3 2017年4月30日
0.0.2 2017年2月20日
0.0.1 2017年2月19日

190 in macOS 和 iOS API

Download history 28/week @ 2024-03-13 10/week @ 2024-03-20 15/week @ 2024-03-27 33/week @ 2024-04-03 36/week @ 2024-04-10 31/week @ 2024-04-17 33/week @ 2024-04-24 23/week @ 2024-05-01 32/week @ 2024-05-08 31/week @ 2024-05-15 26/week @ 2024-05-22 18/week @ 2024-05-29 18/week @ 2024-06-05 15/week @ 2024-06-12 52/week @ 2024-06-19 206/week @ 2024-06-26

每月293次下载

MIT许可证

16KB
358

在Rust中创建和解析Objective-C类型编码。

Objective-C编译器将类型编码为字符串,以便在运行时使用。这个crate旨在提供一种强类型(而不是字符串类型)的方式来创建和描述这些类型编码,而无需在Rust中进行内存分配。

实现Encode

这个crate声明了一个Encode特质,可以针对Objective-C编译器可以编码的类型实现。实现这个特质看起来像

unsafe impl Encode for CGPoint {
    const ENCODING: Encoding<'static> =
        Encoding::Struct("CGPoint", &[CGFloat::ENCODING, CGFLOAT::ENCODING]);
}

有关如何与更复杂的类型(如包含结构的结构)一起工作的示例,请参阅core_graphics示例。

与编码字符串比较

Encoding可以与Objective-C运行时的编码字符串进行比较

assert!(&i32::ENCODING == "i");

生成编码字符串

每个Encoding都实现了Display作为其字符串表示形式。这可以通过to_string方法方便地生成

assert_eq!(i32::ENCODING.to_string(), "i");

无运行时依赖