# [wyre]
Welcome to **wyre** – the super lightweight serialization and communication crate that's so efficient, it practically serializes your data in its sleep. If you’ve ever thought, "Gee, I wish my serialization was as snappy as my sarcasm," then you're in the right place.
## Features
- **Binary Serialization:** Because plain text is for chumps.
- **JSON Serialization:** For when you need to look sophisticated in front of your friends.
- **RON Serialization:** Not the guy from accounting, but Rusty Object Notation.
- **MessagePack Serialization:** Like moving to a tiny house – small but mighty.
- **TOML Serialization:** For those who like to keep their configs neat and tidy.
- **Custom Derivation:** Macro-based custom derive support for structs and enums, because writing boilerplate is so last decade.
## Usage
First things first, add `wyre` to your `Cargo.toml`. This step is critical. Skipping it will result in... nothing working.
```toml
[dependencies]
wyre = "0.1.0"
```
### Example
Here's a simple example to get you started. Even your grandma could follow this – if she’s into Rust, that is.
```rust
use wyre::{SerBin, DeBin, SerJson, DeJson, SerMsgPack, DeMsgPack};
#[derive(SerBin, DeBin, SerJson, DeJson, SerMsgPack, DeMsgPack, PartialEq, Debug)]
struct TestStruct {
a: u32,
b: String,
c: Vec<u8>,
}
fn main() {
let test_message = TestStruct {
a: 42,
b: "Hello, World!".to_string(),
c: vec![1, 2, 3, 4, 5],
};
// Binary Serialization
let serialized_bin = test_message.serialize_bin();
let deserialized_bin = TestStruct::deserialize_bin(&serialized_bin).unwrap();
assert_eq!(test_message, deserialized_bin);
println!("Binary serialization and deserialization succeeded! 🎉");
// JSON Serialization
let serialized_json = test_message.serialize_json();
let deserialized_json = TestStruct::deserialize_json(&serialized_json).unwrap();
assert_eq!(test_message, deserialized_json);
println!("JSON serialization and deserialization succeeded! 🎉");
// MessagePack Serialization
let serialized_wyre = test_message.pack();
let deserialized_wyre = TestStruct::depack(&serialized_wyre).unwrap();
assert_eq!(test_message, deserialized_wyre);
println!("MessagePack serialization and deserialization succeeded! 🎉");
}
```
## License
This project is licensed under the MIT or Apache-2.0 license. Because sharing is caring.
And let's be honest, in today's world, every piece of code is just a beautifully mixed cocktail of copy-pasted snippets from Stack Overflow and GitHub.
## Contributing
We welcome contributions! Please see our [contributing guidelines](https://github.com/u-tra/wyre/blob/main/CONTRIBUTING.md). Don’t be shy – jump right in!