Trait TokenCellTrait

Source
pub trait TokenCellTrait<T: ?Sized, Token: TokenTrait>: Sync {
    // Required methods
    fn new(inner: T, token: &Token) -> Self
       where T: Sized;
    fn try_guard<'l>(
        &'l self,
        token: &'l Token,
    ) -> Result<TokenGuard<'l, T, Token>, Token::ComparisonError>;
    fn try_borrow<'l>(
        &'l self,
        token: &'l Token,
    ) -> Result<&'l T, Token::ComparisonError>;
    fn try_guard_mut<'l>(
        &'l self,
        token: &'l mut Token,
    ) -> Result<TokenGuardMut<'l, T, Token>, Token::ComparisonError>;
    fn try_borrow_mut<'l>(
        &'l self,
        token: &'l mut Token,
    ) -> Result<&'l mut T, Token::ComparisonError>;

    // Provided methods
    fn borrow<'l>(&'l self, token: &'l Token) -> &'l T
       where Token::ComparisonError: Debug { ... }
    fn borrow_mut<'l>(&'l self, token: &'l mut Token) -> &'l mut T
       where Token::ComparisonError: Debug { ... }
    fn map<'a, U, F: FnOnce(TokenGuard<'a, T, Token>) -> U>(
        &'a self,
        f: F,
    ) -> TokenMap<'a, T, U, F, Self, Token> { ... }
    fn map_mut<'a, U, F: FnOnce(TokenGuardMut<'a, T, Token>) -> U>(
        &'a self,
        f: F,
    ) -> TokenMapMut<'a, T, U, F, Self, Token> { ... }
}

Required Methods§

Source

fn new(inner: T, token: &Token) -> Self
where T: Sized,

Constructs a new cell using token as its key.

Source

fn try_guard<'l>( &'l self, token: &'l Token, ) -> Result<TokenGuard<'l, T, Token>, Token::ComparisonError>

Attempts to construct a guard which Derefs to the inner data, but also allows recovering the Token.

Source

fn try_borrow<'l>( &'l self, token: &'l Token, ) -> Result<&'l T, Token::ComparisonError>

Attempts to borrow the inner data.

This only fails if the wrong token was used as a key, provided that Token has a runtime comparison.

Source

fn try_guard_mut<'l>( &'l self, token: &'l mut Token, ) -> Result<TokenGuardMut<'l, T, Token>, Token::ComparisonError>

Attempts to construct a guard which DerefMuts to the inner data, but also allows recovering the Token.

Source

fn try_borrow_mut<'l>( &'l self, token: &'l mut Token, ) -> Result<&'l mut T, Token::ComparisonError>

Attempts to borrow the inner data mutably.

This only fails if the wrong token was used as a key, provided that Token has a runtime comparison.

Provided Methods§

Source

fn borrow<'l>(&'l self, token: &'l Token) -> &'l T
where Token::ComparisonError: Debug,

Borrows the inner data, panicking if the wrong token was used as key.

Source

fn borrow_mut<'l>(&'l self, token: &'l mut Token) -> &'l mut T
where Token::ComparisonError: Debug,

Borrows the inner data mutably, panicking if the wrong token was used as key.

Source

fn map<'a, U, F: FnOnce(TokenGuard<'a, T, Token>) -> U>( &'a self, f: F, ) -> TokenMap<'a, T, U, F, Self, Token>

Constructs a lazy computation that can then be applied using the token.

Source

fn map_mut<'a, U, F: FnOnce(TokenGuardMut<'a, T, Token>) -> U>( &'a self, f: F, ) -> TokenMapMut<'a, T, U, F, Self, Token>

Constructs a lazy computation that can then be applied using the token.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<T: ?Sized, Token: TokenTrait> TokenCellTrait<T, Token> for TokenCell<T, Token>