use config::defaults::DEFAULT_BACKEND;
use {Error, ErrorKind};
impl Default for Backend {
fn default() -> Backend {
DEFAULT_BACKEND
}
}
#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde", serde(rename_all = "camelCase"))]
pub enum Backend {
C = 1,
Rust = 2,
}
impl Backend {
pub fn from_u32(x: u32) -> Result<Backend, Error> {
match x {
1 => Ok(Backend::C),
2 => Ok(Backend::Rust),
_ => Err(Error::new(ErrorKind::BackendEncodeError).add_context(format!("Int: {}", x))),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_send() {
fn assert_send<T: Send>() {}
assert_send::<Backend>();
}
#[test]
fn test_sync() {
fn assert_sync<T: Sync>() {}
assert_sync::<Backend>();
}
#[cfg(feature = "serde")]
#[test]
fn test_serialize() {
use serde;
fn assert_serialize<T: serde::Serialize>() {}
assert_serialize::<Backend>();
}
#[cfg(feature = "serde")]
#[test]
fn test_deserialize() {
use serde;
fn assert_deserialize<'de, T: serde::Deserialize<'de>>() {}
assert_deserialize::<Backend>();
}
}