extern crate salsa; use std::rc::Rc; #[salsa::query_group(NoSendSyncStorage)] trait NoSendSyncDatabase: salsa::Database { fn no_send_sync_value(&self, key: bool) -> Rc; fn no_send_sync_key(&self, key: Rc) -> bool; } fn no_send_sync_value(_db: &dyn NoSendSyncDatabase, key: bool) -> Rc { Rc::new(key) } fn no_send_sync_key(_db: &dyn NoSendSyncDatabase, key: Rc) -> bool { *key } #[salsa::database(NoSendSyncStorage)] #[derive(Default)] struct DatabaseImpl { storage: salsa::Storage, } impl salsa::Database for DatabaseImpl {} #[test] fn no_send_sync() { let db = DatabaseImpl::default(); assert_eq!(db.no_send_sync_value(true), Rc::new(true)); assert_eq!(db.no_send_sync_key(Rc::new(false)), false); }