1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use super::Id; pub struct OptionId<T> { id: Id<T>, } impl<T> From<Option<Id<T>>> for OptionId<T> { fn from(id: Option<Id<T>>) -> Self { if let Some(id) = id { OptionId { id } } else { OptionId { id: Id::invalid() } } } } impl<T> Into<Option<Id<T>>> for OptionId<T> { fn into(self) -> Option<Id<T>> { if self.id.is_valid() { Some(self.id) } else { None } } }