message: add a LogIterator structure
  this will make the code using Log easier to use
diff: @@ -78,6 +78,11 @@ impl LogReader {
  pub fn release_lock(self) -> LogLock { LogLock(self.0.close()) }
  + pub fn into_iter<A>(self) -> LogIterator<A>
  + where for<'de> A: serde::Deserialize<'de>
  + {
  + LogIterator {reader: self, _log_type: ::std::marker::PhantomData }
  + }
  pub fn next<A>(&mut self) -> Result<Option<Log<A>>>
  where for<'de> A: serde::Deserialize<'de>
  {
  @@ -91,6 +96,24 @@ impl LogReader {
  }
  }
  +pub struct LogIterator<A> {
  + reader: LogReader,
  + _log_type: ::std::marker::PhantomData<A>
  +}
  +impl<A> Iterator for LogIterator<A>
  + where for<'de> A: serde::Deserialize<'de>
  +{
  + type Item = Result<Log<A>>;
  +
  + fn next(&mut self) -> Option<Self::Item> {
  + match self.reader.next() {
  + Err(err) => Some(Err(err)),
  + Ok(None) => None,
  + Ok(Some(log)) => Some(Ok(log))
  + }
  + }
  +}
  +
  pub struct LogWriter(append::Writer);
  impl LogWriter {
  pub fn open(locked: LogLock) -> Result<Self> {
  