1extern "C" {
2 fn platform_get_clipboard_string();
3 fn platform_set_clipboard_string(s: *const i8);
4}
5
6pub fn set_clipboard_content(contents: &String) {
7 let c_str = std::ffi::CString::new(contents.as_str()).unwrap();
8 let s = c_str.as_ptr();
9 unsafe {
10 platform_set_clipboard_string(s);
11 }
12}
13
14pub fn get_clipboard_content() -> String {
15 unsafe {
16 platform_get_clipboard_string();
17 }
18 let contents = std::fs::read_to_string("clipboard.txt").unwrap();
19 std::fs::remove_file("clipboard.txt").unwrap();
20 contents
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn test_get_set_clipboard() {
29 let old = get_clipboard_content();
30 let new = "Hello, World!".to_string();
31 set_clipboard_content(&new);
32 let s = get_clipboard_content();
33 assert_eq!(s, new);
34 set_clipboard_content(&old);
35 }
36}