view src/closure_mr.rs @ 16:2b2676d774b1

Remove unnecessary type parameters in Lines reader
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 31 Jan 2016 12:52:22 +0000
parents 895d6a1771db
children 5a7f556c223d
line wrap: on
line source

use mapreducer::{MEmitter, MapReducer, MapperF, MultiRecord, REmitter, Record, ReducerF};

struct ClosureMapReducer {
    mapper: MapperF,
    reducer: ReducerF,
}

impl Clone for ClosureMapReducer {
    fn clone(&self) -> ClosureMapReducer {
        ClosureMapReducer {
            mapper: self.mapper,
            reducer: self.reducer,
        }
    }
}

impl ClosureMapReducer {
    pub fn new(mapper: MapperF, reducer: ReducerF) -> ClosureMapReducer {
        ClosureMapReducer {
            mapper: mapper,
            reducer: reducer,
        }
    }
}

impl MapReducer for ClosureMapReducer {
    fn map(&self, e: &mut MEmitter, r: Record) {
        (self.mapper)(e, r)
    }
    fn reduce(&self, e: &mut REmitter, r: MultiRecord) {
        (self.reducer)(e, r)
    }
}