clipboard_native/
lib.rs

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}