use std::result;
use version::Version;
use error::Application as Error;
use extensions::Extension;
pub type Result<T> = result::Result<T, Error>;
pub trait Application
{
fn name(&self) -> Result<String>;
fn version(&self) -> Result<Version>;
fn need_extensions(&self) -> Vec<Extension> {
vec![]
}
}
#[derive(Debug, Clone, Copy)]
pub struct Example {}
impl Application for Example {
fn name(&self) -> Result<String> {
let name = String::from("ExampleApplication");
Ok(name)
}
fn version(&self) -> Result<Version> {
Ok(Version::new(1, 0, 0))
}
fn need_extensions(&self) -> Vec<Extension> {
vec![Extension::Debug, Extension::Devel, Extension::Surface]
}
}