A library for extracting #[no_mangle] pub extern "C" functions
In order to expose a function with C binary interface for interoperability with other programming languages, Rust developers should use #[no_mangle] attribute and specify ABI for the declared function.
pub extern "C"
You can read about it more here
This library allows to perform syn-driven parsing for obtaining the information about location of these no-mangle-pub-extern-C functions.
Example
main.rs
use ;
unused.rs
pub extern "C"
Output on Windows
[
ParsedFile {
path: "...\\no_mangle_pub_export_c_fn\\src\\lib.rs",
no_mangle_pub_export_c_fns: NoManglePubExportCFns {
no_mangle_pub_export_c_fn_vec: [],
},
},
ParsedFile {
path: "...\\no_mangle_pub_export_c_fn\\src\\main.rs",
no_mangle_pub_export_c_fns: NoManglePubExportCFns {
no_mangle_pub_export_c_fn_vec: [],
},
},
ParsedFile {
path: "...\\no_mangle_pub_export_c_fn\\src\\unused.rs",
no_mangle_pub_export_c_fns: NoManglePubExportCFns {
no_mangle_pub_export_c_fn_vec: [
NoManglePubExportCFnEnds {
start_line: 1,
start_column: 0,
end_line: 4,
end_column: 1,
},
],
},
},
]
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.