use std::result;
use error::Engine as Error;
use version::Version;
pub type Result<T> = result::Result<T, Error>;
#[derive(Debug, Clone, Copy)]
pub struct Aqua {}
pub trait Engine {
fn name(&self) -> Result<String>;
fn version(&self) -> Result<Version>;
}
impl Default for Aqua {
fn default() -> Self {
Self {}
}
}
impl Engine for Aqua {
fn name(&self) -> Result<String> {
let name = String::from(env!("CARGO_PKG_NAME"));
Ok(name)
}
fn version(&self) -> Result<Version> {
let version_major = String::from(env!("CARGO_PKG_VERSION_MAJOR"));
let version_major = match version_major.parse::<u16>() {
Ok(v) => v,
Err(_) => {
return Err(Error::InvalidVersion)
}
};
let version_minor = String::from(env!("CARGO_PKG_VERSION_MINOR"));
let version_minor = match version_minor.parse::<u16>() {
Ok(v) => v,
Err(_) => {
return Err(Error::InvalidVersion)
}
};
let version_patch = String::from(env!("CARGO_PKG_VERSION_PATCH"));
let version_patch = match version_patch.parse::<u16>() {
Ok(v) => v,
Err(_) => {
return Err(Error::InvalidVersion)
}
};
Ok(Version::new(version_major, version_minor, version_patch))
}
}