rust-clipboard
was a bit lacking, especially because it only let me copy text, and didn't allow for multiple things to be on the clipboard at once, so I tried to make a library that worked on all platforms and provided these features. Do you think this API is idiomatic and easy-to-use?
// Clipboard
pub struct Clipboard { ... }
impl Clipboard {
pub fn new() -> io::Result<Clipboard>;
pub fn formats<'a>(&'a self, index: usize) -> io::Result<Formats<'a>>;
pub fn get(&self, index: usize, format: &Format) -> io::Result<Vec<u8>>;
pub fn set(&self, versions: &[(&Format, &[u8])]);
pub fn clear(&self);
}
// Formats
pub struct Formats<'a> { ... }
impl<'a> Iterator for Formats<'a> {
type Item = Format;
}
// Format
pub struct Format { ... }
impl Format {
pub fn new(mime: &'static str) -> Format;
}
impl Clone for Format { ... }
impl PartialEq for Format { ... }
impl Eq for Format {}
Note that although you can get multiple clipboard entries, you can only set one.