Я не знаю, поддерживается ли он официально в потоке без пользовательского интерфейса, но, похоже, он работает, если вы добавите вызов flush
следующим образом:
use windows::application_model::data_transfer::*;
fn main() -> winrt::Result<()> {
let content = DataPackage::new()?;
content.set_text("hello world from Rust")?;
Clipboard::set_content(content)?;
Clipboard::flush()?;
Ok(())
}
Метод flush
гарантирует, что содержимое будет скопировано в буфер обмена и останется там, даже если отправляющее приложение / процесс завершится.