LockFlag

Struct LockFlag 

Source
pub struct LockFlag { /* private fields */ }
Expand description

Lock flags describing how the range is being locked or unlocked. Valid combinations are: shared lock, exclusive lock, unlock, or any of shared/exclusive combined with fail_immediately.

Reference: MS-SMB2 2.2.26.1

Implementations§

Source§

impl LockFlag

Source

pub const fn new() -> Self

Returns an instance with zero initialized data.

Source§

impl LockFlag

Source

pub const fn into_bytes(self) -> [u8; 4]

Returns the underlying bits.

§Layout

The returned byte array is layed out in the same way as described here.

Source

pub const fn from_bytes(bytes: [u8; 4]) -> Self

Converts the given bytes directly into the bitfield struct.

Source§

impl LockFlag

Source

pub fn shared(&self) -> <bool as Specifier>::InOut

Returns the value of shared. Range must be locked shared, allowing other opens to read or take shared locks. Other opens must not be allowed to write within the range.

Source

pub fn shared_or_err( &self, ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

Returns the value of shared.

#Errors

If the returned value contains an invalid bit pattern for shared. Range must be locked shared, allowing other opens to read or take shared locks. Other opens must not be allowed to write within the range.

Source

pub fn with_shared(self, new_val: <bool as Specifier>::InOut) -> Self

Returns a copy of the bitfield with the value of shared set to the given value.

#Panics

If the given value is out of bounds for shared. Range must be locked shared, allowing other opens to read or take shared locks. Other opens must not be allowed to write within the range.

Source

pub fn with_shared_checked( self, new_val: <bool as Specifier>::InOut, ) -> Result<Self, OutOfBounds>

Returns a copy of the bitfield with the value of shared set to the given value.

#Errors

If the given value is out of bounds for shared. Range must be locked shared, allowing other opens to read or take shared locks. Other opens must not be allowed to write within the range.

Source

pub fn set_shared(&mut self, new_val: <bool as Specifier>::InOut)

Sets the value of shared to the given value.

#Panics

If the given value is out of bounds for shared. Range must be locked shared, allowing other opens to read or take shared locks. Other opens must not be allowed to write within the range.

Source

pub fn set_shared_checked( &mut self, new_val: <bool as Specifier>::InOut, ) -> Result<(), OutOfBounds>

Sets the value of shared to the given value.

#Errors

If the given value is out of bounds for shared. Range must be locked shared, allowing other opens to read or take shared locks. Other opens must not be allowed to write within the range.

Source

pub fn exclusive(&self) -> <bool as Specifier>::InOut

Returns the value of exclusive. Range must be locked exclusive, not allowing other opens to read, write, or lock within the range.

Source

pub fn exclusive_or_err( &self, ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

Returns the value of exclusive.

#Errors

If the returned value contains an invalid bit pattern for exclusive. Range must be locked exclusive, not allowing other opens to read, write, or lock within the range.

Source

pub fn with_exclusive(self, new_val: <bool as Specifier>::InOut) -> Self

Returns a copy of the bitfield with the value of exclusive set to the given value.

#Panics

If the given value is out of bounds for exclusive. Range must be locked exclusive, not allowing other opens to read, write, or lock within the range.

Source

pub fn with_exclusive_checked( self, new_val: <bool as Specifier>::InOut, ) -> Result<Self, OutOfBounds>

Returns a copy of the bitfield with the value of exclusive set to the given value.

#Errors

If the given value is out of bounds for exclusive. Range must be locked exclusive, not allowing other opens to read, write, or lock within the range.

Source

pub fn set_exclusive(&mut self, new_val: <bool as Specifier>::InOut)

Sets the value of exclusive to the given value.

#Panics

If the given value is out of bounds for exclusive. Range must be locked exclusive, not allowing other opens to read, write, or lock within the range.

Source

pub fn set_exclusive_checked( &mut self, new_val: <bool as Specifier>::InOut, ) -> Result<(), OutOfBounds>

Sets the value of exclusive to the given value.

#Errors

If the given value is out of bounds for exclusive. Range must be locked exclusive, not allowing other opens to read, write, or lock within the range.

Source

pub fn unlock(&self) -> <bool as Specifier>::InOut

Returns the value of unlock. Range must be unlocked from a previous lock. Unlock range must be identical to lock range.

Source

pub fn unlock_or_err( &self, ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

Returns the value of unlock.

#Errors

If the returned value contains an invalid bit pattern for unlock. Range must be unlocked from a previous lock. Unlock range must be identical to lock range.

Source

pub fn with_unlock(self, new_val: <bool as Specifier>::InOut) -> Self

Returns a copy of the bitfield with the value of unlock set to the given value.

#Panics

If the given value is out of bounds for unlock. Range must be unlocked from a previous lock. Unlock range must be identical to lock range.

Source

pub fn with_unlock_checked( self, new_val: <bool as Specifier>::InOut, ) -> Result<Self, OutOfBounds>

Returns a copy of the bitfield with the value of unlock set to the given value.

#Errors

If the given value is out of bounds for unlock. Range must be unlocked from a previous lock. Unlock range must be identical to lock range.

Source

pub fn set_unlock(&mut self, new_val: <bool as Specifier>::InOut)

Sets the value of unlock to the given value.

#Panics

If the given value is out of bounds for unlock. Range must be unlocked from a previous lock. Unlock range must be identical to lock range.

Source

pub fn set_unlock_checked( &mut self, new_val: <bool as Specifier>::InOut, ) -> Result<(), OutOfBounds>

Sets the value of unlock to the given value.

#Errors

If the given value is out of bounds for unlock. Range must be unlocked from a previous lock. Unlock range must be identical to lock range.

Source

pub fn fail_immediately(&self) -> <bool as Specifier>::InOut

Returns the value of fail_immediately. Lock operation must fail immediately if it conflicts with an existing lock, instead of waiting for the range to become available.

Source

pub fn fail_immediately_or_err( &self, ) -> Result<<bool as Specifier>::InOut, InvalidBitPattern<<bool as Specifier>::Bytes>>

Returns the value of fail_immediately.

#Errors

If the returned value contains an invalid bit pattern for fail_immediately. Lock operation must fail immediately if it conflicts with an existing lock, instead of waiting for the range to become available.

Source

pub fn with_fail_immediately(self, new_val: <bool as Specifier>::InOut) -> Self

Returns a copy of the bitfield with the value of fail_immediately set to the given value.

#Panics

If the given value is out of bounds for fail_immediately. Lock operation must fail immediately if it conflicts with an existing lock, instead of waiting for the range to become available.

Source

pub fn with_fail_immediately_checked( self, new_val: <bool as Specifier>::InOut, ) -> Result<Self, OutOfBounds>

Returns a copy of the bitfield with the value of fail_immediately set to the given value.

#Errors

If the given value is out of bounds for fail_immediately. Lock operation must fail immediately if it conflicts with an existing lock, instead of waiting for the range to become available.

Source

pub fn set_fail_immediately(&mut self, new_val: <bool as Specifier>::InOut)

Sets the value of fail_immediately to the given value.

#Panics

If the given value is out of bounds for fail_immediately. Lock operation must fail immediately if it conflicts with an existing lock, instead of waiting for the range to become available.

Source

pub fn set_fail_immediately_checked( &mut self, new_val: <bool as Specifier>::InOut, ) -> Result<(), OutOfBounds>

Sets the value of fail_immediately to the given value.

#Errors

If the given value is out of bounds for fail_immediately. Lock operation must fail immediately if it conflicts with an existing lock, instead of waiting for the range to become available.

Trait Implementations§

Source§

impl BinRead for LockFlag

Source§

type Args<'__binrw_generated_args_lifetime> = ()

The type used for the args parameter of read_args() and read_options(). Read more
Source§

fn read_options<R: Read + Seek>( __binrw_generated_var_reader: &mut R, __binrw_generated_var_endian: Endian, __binrw_generated_var_arguments: Self::Args<'_>, ) -> BinResult<Self>

Read Self from the reader using the given Endian and arguments. Read more
Source§

fn read<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self: ReadEndian, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments. Read more
Source§

fn read_be<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming big-endian byte order. Read more
Source§

fn read_le<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read Self from the reader using default arguments and assuming little-endian byte order. Read more
Source§

fn read_ne<R>(reader: &mut R) -> Result<Self, Error>
where R: Read + Seek, Self::Args<'a>: for<'a> Required,

Read T from the reader assuming native-endian byte order. Read more
Source§

fn read_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek, Self: ReadEndian,

Read Self from the reader using the given arguments. Read more
Source§

fn read_be_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming big-endian byte order, using the given arguments. Read more
Source§

fn read_le_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read Self from the reader, assuming little-endian byte order, using the given arguments. Read more
Source§

fn read_ne_args<R>(reader: &mut R, args: Self::Args<'_>) -> Result<Self, Error>
where R: Read + Seek,

Read T from the reader, assuming native-endian byte order, using the given arguments. Read more
Source§

impl BinWrite for LockFlag

Source§

type Args<'__binrw_generated_args_lifetime> = ()

The type used for the args parameter of write_args() and write_options(). Read more
Source§

fn write_options<W: Write + Seek>( &self, __binrw_generated_var_writer: &mut W, __binrw_generated_var_endian: Endian, __binrw_generated_var_arguments: Self::Args<'_>, ) -> BinResult<()>

Write Self to the writer using the given Endian and arguments. Read more
Source§

fn write<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self: WriteEndian, Self::Args<'a>: for<'a> Required,

Write Self to the writer using default arguments. Read more
Source§

fn write_be<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self::Args<'a>: for<'a> Required,

Write Self to the writer assuming big-endian byte order. Read more
Source§

fn write_le<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self::Args<'a>: for<'a> Required,

Write Self to the writer assuming little-endian byte order. Read more
Source§

fn write_ne<W>(&self, writer: &mut W) -> Result<(), Error>
where W: Write + Seek, Self::Args<'a>: for<'a> Required,

Write Self to the writer assuming native-endian byte order. Read more
Source§

fn write_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek, Self: WriteEndian,

Write Self to the writer using the given arguments. Read more
Source§

fn write_be_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek,

Write Self to the writer, assuming big-endian byte order, using the given arguments. Read more
Source§

fn write_le_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek,

Write Self to the writer, assuming little-endian byte order, using the given arguments. Read more
Source§

fn write_ne_args<W>( &self, writer: &mut W, args: Self::Args<'_>, ) -> Result<(), Error>
where W: Write + Seek,

Write Self to the writer, assuming native-endian byte order, using the given arguments. Read more
Source§

impl CheckTotalSizeMultipleOf8 for LockFlag

Source§

type Size = TotalSize<[(); 0]>

Source§

impl Clone for LockFlag

Source§

fn clone(&self) -> LockFlag

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LockFlag

Source§

fn fmt(&self, __bf_f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for LockFlag

Source§

fn default() -> LockFlag

Returns the “default value” for a type. Read more
Source§

impl PartialEq for LockFlag

Source§

fn eq(&self, other: &LockFlag) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl ReadEndian for LockFlag

Source§

const ENDIAN: EndianKind = binrw::meta::EndianKind::None

The endianness of the type.
Source§

impl WriteEndian for LockFlag

Source§

const ENDIAN: EndianKind = binrw::meta::EndianKind::None

The endianness of the type.
Source§

impl Copy for LockFlag

Source§

impl Eq for LockFlag

Source§

impl StructuralPartialEq for LockFlag

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V