Struct opaque_ke::ServerLogin
source · [−]pub struct ServerLogin<CS: CipherSuite>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,{ /* private fields */ }
Expand description
The state elements the server holds to record a login
Implementations
sourceimpl<CS: CipherSuite> ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
impl<CS: CipherSuite> ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
sourcepub fn serialize(
&self
) -> GenericArray<u8, <<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State as Serialize>::Len>
pub fn serialize(
&self
) -> GenericArray<u8, <<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State as Serialize>::Len>
Serialization into bytes
sourcepub fn deserialize(bytes: &[u8]) -> Result<Self, ProtocolError>
pub fn deserialize(bytes: &[u8]) -> Result<Self, ProtocolError>
Deserialization from bytes
sourcepub fn start<R: RngCore + CryptoRng, S: SecretKey<CS::KeGroup>>(
rng: &mut R,
server_setup: &ServerSetup<CS, S>,
password_file: Option<ServerRegistration<CS>>,
credential_request: CredentialRequest<CS>,
credential_identifier: &[u8],
_: ServerLoginStartParameters<'_, '_>
) -> Result<ServerLoginStartResult<CS>, ProtocolError<S::Error>>where
U32: Add<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as OutputSizeUser>::OutputSize>,
Sum<U32, <<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as OutputSizeUser>::OutputSize>: ArrayLength<u8> + Add<<CS::KeGroup as KeGroup>::PkLen>,
Sum<Sum<U32, <<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as OutputSizeUser>::OutputSize>, <CS::KeGroup as KeGroup>::PkLen>: ArrayLength<u8>,
pub fn start<R: RngCore + CryptoRng, S: SecretKey<CS::KeGroup>>(
rng: &mut R,
server_setup: &ServerSetup<CS, S>,
password_file: Option<ServerRegistration<CS>>,
credential_request: CredentialRequest<CS>,
credential_identifier: &[u8],
_: ServerLoginStartParameters<'_, '_>
) -> Result<ServerLoginStartResult<CS>, ProtocolError<S::Error>>where
U32: Add<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as OutputSizeUser>::OutputSize>,
Sum<U32, <<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as OutputSizeUser>::OutputSize>: ArrayLength<u8> + Add<<CS::KeGroup as KeGroup>::PkLen>,
Sum<Sum<U32, <<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as OutputSizeUser>::OutputSize>, <CS::KeGroup as KeGroup>::PkLen>: ArrayLength<u8>,
From the client’s “blinded” password, returns a challenge to be sent back to the client, as well as a ServerLogin
sourcepub fn finish(
self,
message: CredentialFinalization<CS>
) -> Result<ServerLoginFinishResult<CS>, ProtocolError>
pub fn finish(
self,
message: CredentialFinalization<CS>
) -> Result<ServerLoginFinishResult<CS>, ProtocolError>
From the client’s second and final message, check the client’s authentication and produce a message transport
Trait Implementations
sourceimpl<CS: CipherSuite> Clone for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
impl<CS: CipherSuite> Clone for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
sourceimpl<CS: CipherSuite> Debug for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Debug,
impl<CS: CipherSuite> Debug for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Debug,
sourceimpl<'de, CS: CipherSuite> Deserialize<'de> for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Deserialize<'de>,
impl<'de, CS: CipherSuite> Deserialize<'de> for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Deserialize<'de>,
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<CS: CipherSuite> Drop for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
impl<CS: CipherSuite> Drop for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
sourceimpl<CS: CipherSuite> Hash for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Hash,
impl<CS: CipherSuite> Hash for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Hash,
sourceimpl<CS: CipherSuite> PartialEq<ServerLogin<CS>> for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: PartialEq,
impl<CS: CipherSuite> PartialEq<ServerLogin<CS>> for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: PartialEq,
sourceimpl<CS: CipherSuite> Serialize for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Serialize,
impl<CS: CipherSuite> Serialize for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Serialize,
impl<CS: CipherSuite> Eq for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
<CS::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, CS::KeGroup>>::KE2State: Eq,
impl<CS: CipherSuite> ZeroizeOnDrop for ServerLogin<CS>where
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as OutputSizeUser>::OutputSize: IsLess<U256> + IsLessOrEqual<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as BlockSizeUser>::BlockSize>,
<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash: Hash,
<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core: ProxyHash,
<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize: IsLess<U256>,
Le<<<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash as CoreProxy>::Core as BlockSizeUser>::BlockSize, U256>: NonZero,
Auto Trait Implementations
impl<CS> RefUnwindSafe for ServerLogin<CS>where
<<CS as CipherSuite>::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, <CS as CipherSuite>::KeGroup>>::KE2State: RefUnwindSafe,
impl<CS> Send for ServerLogin<CS>where
<<CS as CipherSuite>::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, <CS as CipherSuite>::KeGroup>>::KE2State: Send,
impl<CS> Sync for ServerLogin<CS>where
<<CS as CipherSuite>::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, <CS as CipherSuite>::KeGroup>>::KE2State: Sync,
impl<CS> Unpin for ServerLogin<CS>where
<<CS as CipherSuite>::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, <CS as CipherSuite>::KeGroup>>::KE2State: Unpin,
impl<CS> UnwindSafe for ServerLogin<CS>where
<<CS as CipherSuite>::KeyExchange as KeyExchange<<<CS as CipherSuite>::OprfCs as CipherSuite>::Hash, <CS as CipherSuite>::KeGroup>>::KE2State: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more