use core::convert::TryInto;
pub trait ObjectType
where
Self: TryInto<Self::Syntax>,
<Self as TryInto<Self::Syntax>>::Error: rasn::enc::Error + core::fmt::Display,
{
type SmiSyntax: SmiSyntax;
type Syntax: Into<Self::SmiSyntax>;
const ACCESS: Access;
const STATUS: Status;
const VALUE: &'static rasn::types::Oid;
fn into_object_syntax(self) -> Result<Self::SmiSyntax, <Self as TryInto<Self::Syntax>>::Error> {
Ok(self.try_into().map_err(rasn::enc::Error::custom)?.into())
}
}
pub trait SmiSyntax {}
impl SmiSyntax for crate::v1::ObjectSyntax {}
impl SmiSyntax for crate::v2::ObjectSyntax {}
#[derive(Debug, Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
#[non_exhaustive]
pub enum Access {
ReadOnly,
WriteOnly,
ReadWrite,
NotAccessible,
}
#[derive(Debug, Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
#[non_exhaustive]
pub enum Status {
Current,
Deprecated,
Obsolete,
}