diff --git a/cranelift/entity/Cargo.toml b/cranelift/entity/Cargo.toml index 0e390b9b7b..d25353da92 100644 --- a/cranelift/entity/Cargo.toml +++ b/cranelift/entity/Cargo.toml @@ -11,10 +11,14 @@ readme = "README.md" keywords = ["entity", "set", "map"] edition = "2018" +[dependencies] +serde = { version = "1.0.94", features = ["derive"], optional = true } + [features] default = ["std"] std = [] core = [] +enable-serde = ["serde"] [badges] maintenance = { status = "experimental" } diff --git a/cranelift/entity/src/primary.rs b/cranelift/entity/src/primary.rs index d3fc7470c0..257cb240f4 100644 --- a/cranelift/entity/src/primary.rs +++ b/cranelift/entity/src/primary.rs @@ -7,6 +7,8 @@ use core::iter::FromIterator; use core::marker::PhantomData; use core::ops::{Index, IndexMut}; use core::slice; +#[cfg(feature = "enable-serde")] +use serde::{Deserialize, Serialize}; use std::boxed::Box; use std::vec::Vec; @@ -26,6 +28,7 @@ use std::vec::Vec; /// plain slice would make it easier to use incorrectly. To make a slice of a `PrimaryMap`, use /// `into_boxed_slice`. #[derive(Debug, Clone)] +#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))] pub struct PrimaryMap where K: EntityRef,