usage
- sync cache
```rust
use cacher-rs::{Cacher};
let mut i32cacher = Cacher::::new();
// expiresinsecs: 0 -> expires immediate
let v1 = i32cacher.fetch("v1", 10, || 1);
assert_eq!(v1, &1);
let mut stringcacher = Cacher::::new();
let v1 = stringcacher.fetch("v1", 10, || "1".tostring());
asserteq!(v1, "1");
```
- async cache
```rust
use cacher-rs::{AsyncCacher};
let mut i32cacher = AsyncCacher::::new();
// expiresinsecs: 0 -> expires immediate
let v1 = i32cacher.fetch("v1", 10, || Box::pin(async {
Ok(1)
})).await?;
assert_eq!(v1, &1);
let mut stringcacher = AsyncCacher::::new();
let v1 = stringcacher.fetch("v1", 10, || Box::pin(async {
Ok("1".tostring())
})).await?;
asserteq!(v1, "1");
```