``` use threadsafecache::*; use std::thread; use std::thread::sleep; use std::time::Duration; fn main() { let cacheinit: ThreadSafeCache<&str, i32> = ThreadSafeCache::new(); let mut cache1 = cacheinit.clone(); thread::spawn(move || { cache1.put("key1", 1); cache1.putexp("key2", 2, 3000); }); let mut cache2 = cacheinit.clone(); let t = thread::spawn(move || { sleep(Duration::frommillis(2000)); cache2.rm("key1"); cache2.get("key2") }); asserteq!(t.join().unwrap(),Some(2)); let mut cache3 = cacheinit.clone(); asserteq!(cache3.get("key2"), Some(2)); sleep(Duration::frommillis(2000)); asserteq!(cache3.get("key2"), None); }
```
```
use threadsafecache::*;
fn main() {
let mut builder: Builder
```