#[cfg(all( unix, not(any( target_os = "macos", target_os = "ios", target_os = "android", target_os = "emscripten" )) ))] #[path = "platform/linux.rs"] mod platform; #[cfg(target_os = "windows")] #[path = "platform/windows.rs"] mod platform; #[cfg(target_os = "macos")] #[path = "platform/macos.rs"] mod platform; #[cfg(target_os = "ios")] #[path = "platform/ios.rs"] mod platform; use raw_window_handle::HasRawWindowHandle; use std::error::Error; pub struct Clipboard { raw: Box, } impl Clipboard { pub fn new( window: &W, ) -> Result> { let raw = platform::new_clipboard(window)?; Ok(Clipboard { raw }) } pub fn read(&self) -> Result> { // TODO: Think about use of `RefCell` // Maybe we should make `read` mutable (?) self.raw.read() } } pub trait ClipboardProvider { fn read(&self) -> Result>; }