#objective-c #macos-ios #macos #ios #encode

no-std objc2-encode

Objective-C type-encoding representation and parsing

16 releases (6 stable)

4.0.3 May 21, 2024
4.0.0 Dec 3, 2023
3.0.0 Jul 31, 2023
2.0.0 Jun 20, 2023
1.1.0 Nov 19, 2021

#197 in macOS and iOS APIs

Download history 122022/week @ 2024-07-23 111893/week @ 2024-07-30 111420/week @ 2024-08-06 109544/week @ 2024-08-13 116720/week @ 2024-08-20 117997/week @ 2024-08-27 118905/week @ 2024-09-03 106845/week @ 2024-09-10 108010/week @ 2024-09-17 118403/week @ 2024-09-24 120182/week @ 2024-10-01 117769/week @ 2024-10-08 123340/week @ 2024-10-15 127905/week @ 2024-10-22 122367/week @ 2024-10-29 135055/week @ 2024-11-05

527,308 downloads per month
Used in 2,253 crates (via objc2)

MIT license

80KB
2K SLoC

objc2-encode

Latest version License Documentation CI

Objective-C type-encoding in Rust.

This crates provides types to parse and compare Objective-C type-encodings created with the @encode directive.

See the docs for a more thorough overview.

This crate is part of the objc2 project, see that for related crates.


lib.rs:

Objective-C type-encoding

The Objective-C directive @encode encodes types as strings, and this is used in various places in the runtime.

This crate provides the Encoding type to describe and compare these type-encodings, and the EncodingBox type which does the same, except it can be parsed from an encoding at runtime.

The types from this crate is exported under the objc2 crate as objc2::encode, so usually you would use it from there.

Example

Parse an encoding from a string and compare it to a known encoding.

use objc2_encode::{Encoding, EncodingBox};
let s = "{s=i}";
let enc = Encoding::Struct("s", &[Encoding::Int]);
let parsed: EncodingBox = s.parse()?;
assert!(enc.equivalent_to_box(&parsed));
assert_eq!(enc.to_string(), s);

Further resources

No runtime deps

Features