diff --git a/src/reader.rs b/src/reader.rs index daa48a2..b264643 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -74,8 +74,8 @@ impl<'a, R: Reader+Buffer> Decoder for DecoderReader<'a, R> { F: FnOnce(&mut DecoderReader<'a, R>) -> IoResult { f(self) } - fn read_enum_variant(&mut self, _: &[&str], f: F) -> IoResult where - F: FnOnce(&mut DecoderReader<'a, R>, uint) -> IoResult { + fn read_enum_variant(&mut self, _: &[&str], mut f: F) -> IoResult where + F: FnMut(&mut DecoderReader<'a, R>, uint) -> IoResult { let id = try!(self.read_uint()); f(self, id) } @@ -84,7 +84,7 @@ impl<'a, R: Reader+Buffer> Decoder for DecoderReader<'a, R> { f(self) } fn read_enum_struct_variant(&mut self, names: &[&str], f: F) -> IoResult where - F: FnOnce(&mut DecoderReader<'a, R>, uint) -> IoResult { + F: FnMut(&mut DecoderReader<'a, R>, uint) -> IoResult { self.read_enum_variant(names, f) } fn read_enum_struct_variant_field(&mut self, @@ -123,8 +123,8 @@ impl<'a, R: Reader+Buffer> Decoder for DecoderReader<'a, R> { F: FnOnce(&mut DecoderReader<'a, R>) -> IoResult { self.read_tuple_arg(a_idx, f) } - fn read_option(&mut self, f: F) -> IoResult where - F: FnOnce(&mut DecoderReader<'a, R>, bool) -> IoResult { + fn read_option(&mut self, mut f: F) -> IoResult where + F: FnMut(&mut DecoderReader<'a, R>, bool) -> IoResult { match try!(self.reader.read_u8()) { 1 => f(self, true), _ => f(self, false)