25 lines
681 B
Rust
25 lines
681 B
Rust
use super::Embeddable;
|
|
use super::IOResult;
|
|
use super::IOValue;
|
|
|
|
pub trait DomainDecode<D: Embeddable> {
|
|
fn decode_embedded_iovalue(&mut self, v: IOValue) -> IOResult<D>;
|
|
}
|
|
|
|
pub struct IOValueDomainDecode;
|
|
|
|
impl DomainDecode<IOValue> for IOValueDomainDecode {
|
|
fn decode_embedded_iovalue(&mut self, v: IOValue) -> IOResult<IOValue> {
|
|
Ok(v)
|
|
}
|
|
}
|
|
|
|
pub struct NoEmbeddedDomainDecode;
|
|
|
|
impl<D: Embeddable> DomainDecode<D> for NoEmbeddedDomainDecode {
|
|
fn decode_embedded_iovalue(&mut self, _v: IOValue) -> IOResult<D> {
|
|
Err(std::io::Error::new(std::io::ErrorKind::Unsupported,
|
|
"Embedded values not supported here"))
|
|
}
|
|
}
|