我有时以这种方式使用 serde 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.");
}

每当我序列化这些变体之一时,我认为



那我想



最后我想



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

let message = &1;

最佳答案

bincode::serialize 不是const fn,因此不能保证在编译时执行。这意味着不能保证编译器将替换该调用。

关于enums - 在变量中没有数据的枚举的二进制代码序列化是否与引用静态值一样优化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60198198/

10-10 12:33