chardet 0.2.4

rust version of chardet
Documentation
use std::ops::Deref;
use std::ops::DerefMut;
use super::mbcharsetprober::MultiByteCharsetProber;
use super::charsetprober::CharsetProber;
use super::enums::ProbingState;
use super::codingstatemachine::CodingStateMachine;
use super::mbcssm::CP949_SM_MODEL;
use super::chardistribution::EUCKRDistributionAnalysis;

pub struct CP949Prober<'a> {
    base: MultiByteCharsetProber<'a>,
}

impl<'x> Deref for CP949Prober<'x> {
    type Target = MultiByteCharsetProber<'x>;
    fn deref<'a>(&'a self) -> &'a MultiByteCharsetProber<'x> {
        &self.base
    }
}
impl<'x> DerefMut for CP949Prober<'x> {
    fn deref_mut<'a>(&'a mut self) -> &'a mut MultiByteCharsetProber<'x> {
        &mut self.base
    }
}

impl<'a> CharsetProber for CP949Prober<'a> {
    fn reset(&mut self) {
        self.base.reset();
    }
    fn feed(&mut self, byte_str: &[u8]) -> &ProbingState {
        self.base.feed(byte_str)
    }
    fn get_charset(&self) -> String {
        "CP949".to_string()
    }
    fn get_confidence(&self) -> f32 {
        self.base.get_confidence()
    }
    fn get_language(&self) -> String {
        "Korean".to_string()
    }
    fn get_state(&self) -> &ProbingState {
        self.base.get_state()
    }
}

impl<'a> CP949Prober<'a> {
    pub fn new() -> CP949Prober<'a> {
        let mut x = CP949Prober { base:MultiByteCharsetProber::new() };
        x.base.m_coding_sm = Some(CodingStateMachine::new(&CP949_SM_MODEL));
        x.base.m_distribution_analyzer = Some(Box::new(EUCKRDistributionAnalysis::new()));
        x
    }
}