枚举的二进制代码序列化中的数据是否已优化为引用静态值?

问题描述 投票:2回答:1

我有时以这种方式使用serdeserde

bincode

[只要我序列化这些变体之一,我就认为

嘿.. bincode的实际内容是静态已知的,也许我应该将其设为use serde::{Deserialize, Serialize}; use bincode; #[derive(Serialize, Deserialize)] pub enum PlainDryEnum { FirstVariant, Second, Third, } fn example() { let message = bincode::serialize(&PlainDryEnum::Second) .expect("Could not serialize variant."); } 或至少是message,所以我不会依赖对const的无用动态调用。

然后我想

嗯..我想我也可以为lazy_static中的每个变体做同样的事情。尝试使用宏。

最后我想

请稍等..这不是编译器的工作吗?

我应该担心这种优化水平吗?在这种情况下,编译器是否优化了对lazy_static的调用,而只是用常量替换(本质上)此代码?

serialize
enums rust static compiler-optimization serde
1个回答
-1
投票

[PlainDryEnum不是serialize,因此无法在编译时执行

© www.soinside.com 2019 - 2024. All rights reserved.