Я не могу просто взять и изменить поле memory_backend: &'a mut dyn MemoryBackend на
Значит раздели модули на Sync / not Sync, реализуй одну структуру с Sync, а другую без.
- Имя и api структуры будут одинаковыми, а модули разные.
// crate::sync::cache;
pub struct Cache<'a, T> {
memory_backend: &'a mut dyn MemoryBackend + Send + Sync,
phantom_data: core::marker::PhantomData<T>,
}
// crate::cache;
pub struct Cache<'a, T> {
memory_backend: &'a mut dyn MemoryBackend,
phantom_data: core::marker::PhantomData<T>,
}