mime/platform/
linux.rs
1use smithay_clipboard::mime::{AllowedMimeTypes, AsMimeTypes, MimeType};
2
3use crate::{ClipboardLoadData, ClipboardStoreData};
4
5impl<T: crate::AsMimeTypes> AsMimeTypes for ClipboardStoreData<T> {
6 fn available(&self) -> std::borrow::Cow<'static, [MimeType]> {
7 self.0
8 .available()
9 .into_iter()
10 .map(|m| MimeType::Other(m.clone().into()))
11 .collect()
12 }
13
14 fn as_bytes(
15 &self,
16 mime_type: &MimeType,
17 ) -> Option<std::borrow::Cow<'static, [u8]>> {
18 self.0.as_bytes(mime_type.as_ref())
19 }
20}
21
22impl<T: crate::AllowedMimeTypes> AllowedMimeTypes for ClipboardLoadData<T> {
23 fn allowed() -> std::borrow::Cow<'static, [MimeType]> {
25 T::allowed()
26 .into_iter()
27 .map(|s| MimeType::Other(s.clone().into()))
28 .collect()
29 }
30}
31
32impl<T> TryFrom<(Vec<u8>, MimeType)> for ClipboardLoadData<T>
33where
34 T: for<'b> TryFrom<(Vec<u8>, String)>,
35 T: 'static,
36{
37 type Error = crate::Error;
38
39 fn try_from(
40 (value, mime): (Vec<u8>, MimeType),
41 ) -> Result<Self, Self::Error> {
42 let mime = mime.to_string();
43 Ok(ClipboardLoadData(
44 T::try_from((value, mime)).map_err(|_| crate::Error)?,
45 ))
46 }
47}