Я иногда использую 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.");
}
Всякий раз, когда я сериализую один из этих вариантов, я думаю
эй .. фактическое содержание message
статически известно, может быть, я должен сделать это const
или хотя бы lazy_static
, поэтому я бы не стал полагаться на бесполезную динамику c вызов serialize
.
Тогда я думаю,
хорошо ... Я думаю, я мог бы сделать то же самое для каждого варианта в PlainDryEnum
. Попробуйте это с помощью макроса.
Наконец-то я думаю
подождите минутку .. разве это не работа для компилятора?
Стоит ли беспокоиться об этом уровне оптимизации? Оптимизирует ли компилятор вызов serialize
в этом случае и просто заменяет (по духу) этот код константой?
let message = &1;