@@ -191,8 +191,13 @@ pub type CacheResult<T> = Result<T, CacheError>;
191191/// ```
192192#[ derive( Debug , Clone ) ]
193193pub struct Cache {
194+ inner : Arc < CacheImpl > ,
195+ }
196+
197+ #[ derive( Debug ) ]
198+ struct CacheImpl {
194199 #[ debug( ".." ) ]
195- store : Arc < dyn BoxCacheStore > ,
200+ store : Box < dyn BoxCacheStore > ,
196201 prefix : Option < String > ,
197202 expiry : Timeout ,
198203}
@@ -219,17 +224,19 @@ impl Cache {
219224 /// );
220225 /// ```
221226 pub fn new ( store : impl CacheStore , prefix : Option < String > , expiry : Timeout ) -> Self {
222- let store: Arc < dyn BoxCacheStore > = Arc :: new ( store) ;
227+ let store: Box < dyn BoxCacheStore > = Box :: new ( store) ;
223228 Self {
224- store,
225- prefix,
226- expiry,
229+ inner : Arc :: new ( CacheImpl {
230+ store,
231+ prefix,
232+ expiry,
233+ } ) ,
227234 }
228235 }
229236
230237 fn format_key < K : AsRef < str > > ( & self , key : K ) -> String {
231238 let k = key. as_ref ( ) ;
232- if let Some ( pref) = & self . prefix {
239+ if let Some ( pref) = & self . inner . prefix {
233240 return format ! ( "{pref}:{k}" ) ;
234241 }
235242 k. to_string ( )
@@ -276,6 +283,7 @@ impl Cache {
276283 {
277284 let k = self . format_key ( key. as_ref ( ) ) ;
278285 let result = self
286+ . inner
279287 . store
280288 . get ( & k)
281289 . await ?
@@ -334,8 +342,9 @@ impl Cache {
334342 V : Serialize ,
335343 {
336344 let k = self . format_key ( key. into ( ) ) ;
337- self . store
338- . insert ( k, serde_json:: to_value ( value) ?, self . expiry )
345+ self . inner
346+ . store
347+ . insert ( k, serde_json:: to_value ( value) ?, self . inner . expiry )
339348 . await ?;
340349 Ok ( ( ) )
341350 }
@@ -387,7 +396,8 @@ impl Cache {
387396 V : Serialize ,
388397 {
389398 let k = self . format_key ( key. into ( ) ) ;
390- self . store
399+ self . inner
400+ . store
391401 . insert ( k, serde_json:: to_value ( value) ?, expiry)
392402 . await ?;
393403 Ok ( ( ) )
@@ -424,7 +434,7 @@ impl Cache {
424434 /// ```
425435 pub async fn remove < K : AsRef < str > > ( & self , key : K ) -> CacheResult < ( ) > {
426436 let k = self . format_key ( key. as_ref ( ) ) ;
427- self . store . remove ( & k) . await ?;
437+ self . inner . store . remove ( & k) . await ?;
428438 Ok ( ( ) )
429439 }
430440
@@ -465,7 +475,7 @@ impl Cache {
465475 /// # }
466476 /// ```
467477 pub async fn clear ( & self ) -> CacheResult < ( ) > {
468- self . store . clear ( ) . await ?;
478+ self . inner . store . clear ( ) . await ?;
469479 Ok ( ( ) )
470480 }
471481
@@ -505,7 +515,7 @@ impl Cache {
505515 /// # }
506516 /// ```
507517 pub async fn approx_size ( & self ) -> CacheResult < usize > {
508- let result = self . store . approx_size ( ) . await ?;
518+ let result = self . inner . store . approx_size ( ) . await ?;
509519 Ok ( result)
510520 }
511521
@@ -542,7 +552,7 @@ impl Cache {
542552 /// ```
543553 pub async fn contains_key < K : AsRef < str > > ( & self , key : K ) -> CacheResult < bool > {
544554 let k = self . format_key ( key. as_ref ( ) ) ;
545- let result = self . store . contains_key ( & k) . await ?;
555+ let result = self . inner . store . contains_key ( & k) . await ?;
546556 Ok ( result)
547557 }
548558
0 commit comments