3 个版本
0.1.2 | 2022 年 7 月 20 日 |
---|---|
0.1.1 | 2022 年 7 月 20 日 |
0.1.0 | 2022 年 7 月 20 日 |
#2384 in Rust 模式
8KB
141 行
用于将常见字符串存储为枚举变体的宏
此软件包提供了一个宏,用于将常见字符串存储为枚举变体。如果您存储了大量的字符串,其中一些值经常出现,这可以减少内存使用。
您可以通过启用 serde
功能来添加序列化和反序列化支持。
示例
一个例子是 Discord 频道名称。像 general
、offtopic
、support
、staff
等名称占所有频道名称的大多数。为每个名为 general
的频道存储字符串会浪费很多资源。
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
}
依赖项
~165KB