1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
use copypasta::ClipboardProvider; /// Combined, use different clipboard context for getting & setting. /// /// Useful to combine different clipboard contexts to get the best of both worlds. /// /// This may be constructed using helpers such as /// [`X11BinClipboardContext::new_with_x11`][new_with_x11] or /// [`X11BinClipboardContext::with_x11`][with_x11]. /// /// [new_with_x11]: ../copypasta_ext/x11_bin/struct.X11BinClipboardContext.html#method.new_with_x11 /// [with_x11]: ../copypasta_ext/x11_bin/struct.X11BinClipboardContext.html#method.with_x11 pub struct CombinedClipboardContext<G, S>(pub G, pub S) where G: ClipboardProvider, S: ClipboardProvider; // impl<G, S> CombinedClipboardContext<G, S> // where // G: ClipboardProvider, // S: ClipboardProvider, // { // pub fn new() -> Result<Self, Box<dyn Error>> { // Ok(Self(G::new()?, S::new()?)) // } // } impl<G, S> ClipboardProvider for CombinedClipboardContext<G, S> where G: ClipboardProvider, S: ClipboardProvider, { fn get_contents(&mut self) -> crate::ClipResult<String> { self.0.get_contents() } fn set_contents(&mut self, contents: String) -> crate::ClipResult<()> { self.1.set_contents(contents) } }