A library for extracting #[repr(C)] pub structures
In order to expose a struct with stable ABI for interoperability with other programming languages,
Rust developers should use #[repr(C)] attribute.
You can read about it more here
This library allows to perform syn-driven parsing for obtaining the information about location of these repr-c-pub-structs.
Example
src/main.rs
use parse_for_repr_c_pub_structs;
src/unused.rs
Output on Windows
[
ParsedFile {
path: "...\\repr_c_pub_struct\\src\\lib.rs",
repr_c_pub_structs: ReprCPubStructs(
[],
),
},
ParsedFile {
path: "...\\repr_c_pub_struct\\src\\main.rs",
repr_c_pub_structs: ReprCPubStructs(
[],
),
},
ParsedFile {
path: "...\\repr_c_pub_struct\\src\\unused.rs",
repr_c_pub_structs: ReprCPubStructs(
[
LineColumnEnds {
start_line: 1,
start_column: 0,
end_line: 4,
end_column: 1,
},
],
),
},
]
Note
The paths will be absolute. The prefixes have been deleted intentionally.
Seralization & Deserialization
All structures in this library implement Serialize and Deserialize traits from serde. Because of that you can convert into many data formats supporting serde.
Data formats
- JSON, the ubiquitous JavaScript Object Notation used by many HTTP APIs.
- Bincode, a compact binary format used for IPC within the Servo rendering engine.
- CBOR, a Concise Binary Object Representation designed for small message size without the need for version negotiation.
- YAML, a self-proclaimed human-friendly configuration language that ain't markup language.
- MessagePack, an efficient binary format that resembles a compact JSON.
- TOML, a minimal configuration format used by Cargo.
- Pickle, a format common in the Python world.
- RON, a Rusty Object Notation.
- BSON, the data storage and network transfer format used by MongoDB.
- Avro, a binary format used within Apache Hadoop, with support for schema definition.
- JSON5, a superset of JSON including some productions from ES5.
- Postcard, a no_std and embedded-systems friendly compact binary format.
- URL query strings, in the x-www-form-urlencoded format.
- Envy, a way to deserialize environment variables into Rust structs. (deserialization only)
- Envy Store, a way to deserialize AWS Parameter Store parameters into Rust structs. (deserialization only)
- S-expressions, the textual representation of code and data used by the Lisp language family.
- D-Bus's binary wire format.
- FlexBuffers, the schemaless cousin of Google's FlatBuffers zero-copy serialization format.
- DynamoDB Items, the format used by rusoto_dynamodb to transfer data to and from DynamoDB.