// use core::fmt;
// use core::hash::{Hash, Hasher};
// use core::marker::PhantomData;

// /// The inner type of FlixId
// pub type Inner = u32;

// /// Wraps a flix ID, the generic parameter is to enforce that
// /// IDs for different types of media are not interchangeable
// #[repr(transparent)]
// #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
// #[cfg_attr(feature = "serde", serde(transparent))]
// pub struct FlixId<T> {
// 	inner: Inner,
// 	#[serde(skip_serializing, default)]
// 	_phantom: PhantomData<T>,
// }

// impl<T> FlixId<T> {
// 	/// Extract the inner value
// 	pub fn inner(self) -> Inner {
// 		self.inner
// 	}
// }

// impl<T> From<Inner> for FlixId<T> {
// 	fn from(value: Inner) -> Self {
// 		Self {
// 			inner: value,
// 			_phantom: PhantomData,
// 		}
// 	}
// }

// impl<T> From<FlixId<T>> for Inner {
// 	fn from(value: FlixId<T>) -> Self {
// 		value.inner
// 	}
// }

// impl<T> fmt::Debug for FlixId<T> {
// 	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// 		self.inner.fmt(f)
// 	}
// }

// impl<T> fmt::Display for FlixId<T> {
// 	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
// 		self.inner.fmt(f)
// 	}
// }

// impl<T> Clone for FlixId<T> {
// 	fn clone(&self) -> Self {
// 		*self
// 	}
// }

// impl<T> Copy for FlixId<T> {}

// impl<T> PartialEq for FlixId<T> {
// 	fn eq(&self, other: &Self) -> bool {
// 		self.inner == other.inner
// 	}
// }

// impl<T> Eq for FlixId<T> {}

// impl<T> Hash for FlixId<T> {
// 	fn hash<H: Hasher>(&self, state: &mut H) {
// 		self.inner.hash(state);
// 	}
// }
