### Macro for storing common strings as enum variants
This crate provides a single macro for storing common strings as enum variants. If you are storing a lot of
strings where a few values often occur, this can reduce the memory usage.
You can enable the `serde` feature to add serialization and deserialization support.
#### Example
An example for this are Discord channel names. Names like `general`, `offtopic`, `support`, `staff`, ... make up a large
percentage of all channel names. Storing a string for each channel called `general` wastes a lot of resources.
```rust
use common_strings::{common_strings, CommonStrings};
common_strings!(
#[derive(Clone, Debug)]
pub enum ChannelName {
const General = "general";
const Offtopic = "offtopic";
const Support = "support";
const Staff = "staff";
}
);
fn main() {
let channel_name = ChannelName::General;
println!("{}", channel_name.as_ref()); // general
let channel_name = ChannelName::Other(String::from("my-channel"));
println!("{}", channel_name); // my-channel
let channel_name = ChannelName::from_cow("offtopic".into());
println!("{}", channel_name.into_string()); // offtopic
}
```