From 14f1527e615d763a8885638228618f1f8347295a Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Thu, 18 Jul 2019 20:14:14 +0300 Subject: [PATCH] melib: remove BackendOpGenerator --- benches/parse.rs | 1 - melib/src/backends.rs | 27 +++------------------------ 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/benches/parse.rs b/benches/parse.rs index d5a07214b..be942661e 100644 --- a/benches/parse.rs +++ b/benches/parse.rs @@ -2,7 +2,6 @@ //extern crate melib; // //use melib::mailbox::backends::maildir::MaildirOp; -//use melib::mailbox::backends::BackendOpGenerator; //use melib::mailbox::email::Envelope; // //extern crate test; diff --git a/melib/src/backends.rs b/melib/src/backends.rs index a8b792119..75d802459 100644 --- a/melib/src/backends.rs +++ b/melib/src/backends.rs @@ -155,7 +155,7 @@ pub trait MailBackend: ::std::fmt::Debug { } /// A `BackendOp` manages common operations for the various mail backends. They only live for the -/// duration of the operation. They are generated by `BackendOpGenerator` on demand. +/// duration of the operation. They are generated by the `operation` method of `Mailbackend` trait. /// /// # Motivation /// @@ -171,7 +171,7 @@ pub trait MailBackend: ::std::fmt::Debug { /// /// # Example /// ``` -/// use melib::mailbox::backends::{BackendOp, BackendOpGenerator}; +/// use melib::mailbox::backends::{BackendOp}; /// use melib::Result; /// use melib::{Envelope, Flag}; /// @@ -196,8 +196,7 @@ pub trait MailBackend: ::std::fmt::Debug { /// } /// } /// -/// let foogen = BackendOpGenerator::new(Box::new(|| Box::new(FooOp {}))); -/// let operation = foogen.generate(); +/// let operation = Box::new(FooOp {}); /// assert_eq!("Foobar", &operation.description()); /// ``` pub trait BackendOp: ::std::fmt::Debug + ::std::marker::Send { @@ -211,26 +210,6 @@ pub trait BackendOp: ::std::fmt::Debug + ::std::marker::Send { fn set_flag(&mut self, envelope: &mut Envelope, flag: Flag) -> Result<()>; } -/// `BackendOpGenerator` is a wrapper for a closure that returns a `BackendOp` object -/// See `BackendOp` for details. -/* - * I know this sucks, but that's the best way I found that rustc deems safe. - * */ -pub struct BackendOpGenerator(Box Box>); -impl BackendOpGenerator { - pub fn new(b: Box Box>) -> Self { - BackendOpGenerator(b) - } - pub fn generate(&self) -> Box { - self.0() - } -} -unsafe impl Send for BackendOpGenerator {} -unsafe impl Sync for BackendOpGenerator {} -impl fmt::Debug for BackendOpGenerator { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let op = self.generate(); - write!(f, "BackendOpGenerator: {}", op.description()) } }