From 01b400ea297b706d15d7927d03e72aa6785a81ba Mon Sep 17 00:00:00 2001 From: tidely <43219534+tidely@users.noreply.github.com> Date: Fri, 28 Mar 2025 23:38:05 +0200 Subject: [PATCH] gpui: Implement From trait for Clipboard related structs (#27585) Implement the From trait for some simple conversations between Clipboard related structs. This PR only adds the From trait implementations and doesn't touch any code. In a future PR we can simplify usage throughout the codebase, such as: ```rust // impl ClipboardString fn new(text: String) -> Self { Self::from(text) } ``` Release Notes: - N/A *or* Added/Fixed/Improved ... --- crates/gpui/src/platform.rs | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/crates/gpui/src/platform.rs b/crates/gpui/src/platform.rs index 534a0e659e..141c650f3b 100644 --- a/crates/gpui/src/platform.rs +++ b/crates/gpui/src/platform.rs @@ -1335,6 +1335,44 @@ impl ClipboardItem { } } +impl From for ClipboardEntry { + fn from(value: ClipboardString) -> Self { + Self::String(value) + } +} + +impl From for ClipboardEntry { + fn from(value: String) -> Self { + Self::from(ClipboardString::from(value)) + } +} + +impl From for ClipboardEntry { + fn from(value: Image) -> Self { + Self::Image(value) + } +} + +impl From for ClipboardItem { + fn from(value: ClipboardEntry) -> Self { + Self { + entries: vec![value], + } + } +} + +impl From for ClipboardItem { + fn from(value: String) -> Self { + Self::from(ClipboardEntry::from(value)) + } +} + +impl From for ClipboardItem { + fn from(value: Image) -> Self { + Self::from(ClipboardEntry::from(value)) + } +} + /// One of the editor's supported image formats (e.g. PNG, JPEG) - used when dealing with images in the clipboard #[derive(Clone, Copy, Debug, Eq, PartialEq, EnumIter, Hash)] pub enum ImageFormat { @@ -1503,3 +1541,12 @@ impl ClipboardString { hasher.finish() } } + +impl From for ClipboardString { + fn from(value: String) -> Self { + Self { + text: value, + metadata: None, + } + } +}