pub struct Win32Kernel<T, V> {
pub virt_mem: VirtualDma<T, V, Win32VirtualTranslate>,
pub offsets: Win32Offsets,
pub kernel_info: Win32KernelInfo,
pub sysproc_dtb: Address,
pub kernel_modules: Option<Win32ModuleListInfo>,
}
Fields§
§virt_mem: VirtualDma<T, V, Win32VirtualTranslate>
§offsets: Win32Offsets
§kernel_info: Win32KernelInfo
§sysproc_dtb: Address
§kernel_modules: Option<Win32ModuleListInfo>
Implementations§
Source§impl<T: 'static + PhysicalMemory + Clone, V: 'static + VirtualTranslate2 + Clone> Win32Kernel<T, V>
impl<T: 'static + PhysicalMemory + Clone, V: 'static + VirtualTranslate2 + Clone> Win32Kernel<T, V>
pub fn new( phys_mem: T, vat: V, offsets: Win32Offsets, kernel_info: Win32KernelInfo, ) -> Self
pub fn kernel_modules(&mut self) -> Result<Win32ModuleListInfo>
Sourcepub fn into_inner(self) -> (T, V)
pub fn into_inner(self) -> (T, V)
Consumes this kernel and return the underlying owned memory and vat objects
pub fn kernel_process_info(&mut self) -> Result<Win32ProcessInfo>
pub fn process_info_from_base_info( &mut self, base_info: ProcessInfo, ) -> Result<Win32ProcessInfo>
Source§impl<T: PhysicalMemory> Win32Kernel<T, DirectTranslate>
impl<T: PhysicalMemory> Win32Kernel<T, DirectTranslate>
pub fn builder(connector: T) -> Win32KernelBuilder<T, T, DirectTranslate>
Trait Implementations§
Source§impl<T: PhysicalMemory, V: VirtualTranslate2> AsMut<T> for Win32Kernel<T, V>
impl<T: PhysicalMemory, V: VirtualTranslate2> AsMut<T> for Win32Kernel<T, V>
Source§impl<T: PhysicalMemory, V: VirtualTranslate2> AsMut<VirtualDma<T, V, Win32VirtualTranslate>> for Win32Kernel<T, V>
impl<T: PhysicalMemory, V: VirtualTranslate2> AsMut<VirtualDma<T, V, Win32VirtualTranslate>> for Win32Kernel<T, V>
Source§fn as_mut(&mut self) -> &mut VirtualDma<T, V, Win32VirtualTranslate>
fn as_mut(&mut self) -> &mut VirtualDma<T, V, Win32VirtualTranslate>
Source§impl<T: Clone, V: Clone> Clone for Win32Kernel<T, V>
impl<T: Clone, V: Clone> Clone for Win32Kernel<T, V>
Source§fn clone(&self) -> Win32Kernel<T, V>
fn clone(&self) -> Win32Kernel<T, V>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<T: PhysicalMemory, V: VirtualTranslate2> Debug for Win32Kernel<T, V>
impl<T: PhysicalMemory, V: VirtualTranslate2> Debug for Win32Kernel<T, V>
Source§impl<T: PhysicalMemory, V: VirtualTranslate2> MemoryView for Win32Kernel<T, V>
impl<T: PhysicalMemory, V: VirtualTranslate2> MemoryView for Win32Kernel<T, V>
fn read_raw_iter(&mut self, data: ReadRawMemOps<'_, '_, '_, '_>) -> Result<()>
fn write_raw_iter(&mut self, data: WriteRawMemOps<'_, '_, '_, '_>) -> Result<()>
fn metadata(&self) -> MemoryViewMetadata
Source§fn read_iter<'a, 'b>(
&mut self,
inp: impl Iterator<Item = CTup2<Address, CSliceMut<'a, u8>>>,
out: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceMut<'a, u8>>>>,
out_fail: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceMut<'a, u8>>>>,
) -> Result<(), Error>
fn read_iter<'a, 'b>( &mut self, inp: impl Iterator<Item = CTup2<Address, CSliceMut<'a, u8>>>, out: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceMut<'a, u8>>>>, out_fail: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceMut<'a, u8>>>>, ) -> Result<(), Error>
fn read_raw_list( &mut self, data: &mut [CTup2<Address, CSliceMut<'_, u8>>], ) -> Result<(), PartialError<()>>
fn read_raw_into( &mut self, addr: Address, out: &mut [u8], ) -> Result<(), PartialError<()>>
fn read_raw( &mut self, addr: Address, len: usize, ) -> Result<Vec<u8>, PartialError<Vec<u8>>>
fn read_into<T>( &mut self, addr: Address, out: &mut T, ) -> Result<(), PartialError<()>>
fn read<T>(&mut self, addr: Address) -> Result<T, PartialError<T>>
fn read_addr32(
&mut self,
addr: Address,
) -> Result<Address, PartialError<Address>>where
Self: Sized,
fn read_addr64(
&mut self,
addr: Address,
) -> Result<Address, PartialError<Address>>where
Self: Sized,
fn read_addr_arch(
&mut self,
arch: &'static dyn Architecture,
addr: Address,
) -> Result<Address, PartialError<Address>>where
Self: Sized,
fn read_ptr_into<U, T>( &mut self, ptr: Pointer<U, T>, out: &mut T, ) -> Result<(), PartialError<()>>
fn read_ptr<U, T>(&mut self, ptr: Pointer<U, T>) -> Result<T, PartialError<T>>
Source§fn write_iter<'a, 'b>(
&mut self,
inp: impl Iterator<Item = CTup2<Address, CSliceRef<'a, u8>>>,
out: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceRef<'a, u8>>>>,
out_fail: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceRef<'a, u8>>>>,
) -> Result<(), Error>
fn write_iter<'a, 'b>( &mut self, inp: impl Iterator<Item = CTup2<Address, CSliceRef<'a, u8>>>, out: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceRef<'a, u8>>>>, out_fail: Option<&mut OpaqueCallback<'b, CTup2<Address, CSliceRef<'a, u8>>>>, ) -> Result<(), Error>
fn write_raw_list( &mut self, data: &[CTup2<Address, CSliceRef<'_, u8>>], ) -> Result<(), PartialError<()>>
fn write_raw( &mut self, addr: Address, data: &[u8], ) -> Result<(), PartialError<()>>
fn write<T>(&mut self, addr: Address, data: &T) -> Result<(), PartialError<()>>
fn write_ptr<U, T>( &mut self, ptr: Pointer<U, T>, data: &T, ) -> Result<(), PartialError<()>>
Source§fn read_char_array(
&mut self,
addr: Address,
len: usize,
) -> Result<String, PartialError<String>>
fn read_char_array( &mut self, addr: Address, len: usize, ) -> Result<String, PartialError<String>>
Source§fn read_char_string_n(
&mut self,
addr: Address,
n: usize,
) -> Result<String, PartialError<String>>
fn read_char_string_n( &mut self, addr: Address, n: usize, ) -> Result<String, PartialError<String>>
Source§fn read_char_string(
&mut self,
addr: Address,
) -> Result<String, PartialError<String>>
fn read_char_string( &mut self, addr: Address, ) -> Result<String, PartialError<String>>
Source§fn read_utf8(
&mut self,
addr: Address,
max_length: usize,
) -> Result<String, PartialError<String>>
fn read_utf8( &mut self, addr: Address, max_length: usize, ) -> Result<String, PartialError<String>>
max_length
characters. Read moreSource§fn read_utf8_lossy(
&mut self,
addr: Address,
max_length: usize,
) -> Result<String, PartialError<String>>
fn read_utf8_lossy( &mut self, addr: Address, max_length: usize, ) -> Result<String, PartialError<String>>
max_length
characters. Read moreSource§fn cursor(&mut self) -> MemoryCursor<Fwd<&mut Self>>where
Self: Sized,
fn cursor(&mut self) -> MemoryCursor<Fwd<&mut Self>>where
Self: Sized,
MemoryCursor
for more details.Source§fn into_cursor(self) -> MemoryCursor<Self>where
Self: Sized,
fn into_cursor(self) -> MemoryCursor<Self>where
Self: Sized,
MemoryCursor
for more details.Source§fn cursor_at(&mut self, address: Address) -> MemoryCursor<Fwd<&mut Self>>where
Self: Sized,
fn cursor_at(&mut self, address: Address) -> MemoryCursor<Fwd<&mut Self>>where
Self: Sized,
MemoryCursor
for more details.Source§fn into_cursor_at(self, address: Address) -> MemoryCursor<Self>where
Self: Sized,
fn into_cursor_at(self, address: Address) -> MemoryCursor<Self>where
Self: Sized,
MemoryCursor
for more details.fn batcher(&mut self) -> MemoryViewBatcher<'_, Self>where
Self: Sized,
fn into_overlay_arch(
self,
arch: &'static dyn Architecture,
) -> ArchOverlayView<Self>where
Self: Sized,
fn overlay_arch(
&mut self,
arch: &'static dyn Architecture,
) -> ArchOverlayView<Fwd<&mut Self>>where
Self: Sized,
fn into_overlay_arch_parts(
self,
arch_bits: u8,
little_endian: bool,
) -> ArchOverlayView<Self>where
Self: Sized,
fn overlay_arch_parts(
&mut self,
arch_bits: u8,
little_endian: bool,
) -> ArchOverlayView<Fwd<&mut Self>>where
Self: Sized,
fn into_remap_view(self, mem_map: MemoryMap<(Address, u64)>) -> RemapView<Self>where
Self: Sized,
fn remap_view(
&mut self,
mem_map: MemoryMap<(Address, u64)>,
) -> RemapView<Fwd<&mut Self>>where
Self: Sized,
fn into_phys_mem(self) -> PhysicalMemoryOnView<Self>where
Self: Sized,
fn phys_mem(&mut self) -> PhysicalMemoryOnView<Fwd<&mut Self>>where
Self: Sized,
Source§impl<T: 'static + PhysicalMemory + Clone, V: 'static + VirtualTranslate2 + Clone> Os for Win32Kernel<T, V>
impl<T: 'static + PhysicalMemory + Clone, V: 'static + VirtualTranslate2 + Clone> Os for Win32Kernel<T, V>
Source§fn process_address_list_callback(
&mut self,
callback: AddressCallback<'_>,
) -> Result<()>
fn process_address_list_callback( &mut self, callback: AddressCallback<'_>, ) -> Result<()>
Walks a process list and calls a callback for each process structure address
The callback is fully opaque. We need this style so that C FFI can work seamlessly.
Source§fn process_info_by_address(&mut self, address: Address) -> Result<ProcessInfo>
fn process_info_by_address(&mut self, address: Address) -> Result<ProcessInfo>
Find process information by its internal address
Source§fn process_by_info(
&mut self,
info: ProcessInfo,
) -> Result<Self::ProcessType<'_>>
fn process_by_info( &mut self, info: ProcessInfo, ) -> Result<Self::ProcessType<'_>>
Creates a process by its internal address
It will share the underlying memory resources
Source§fn into_process_by_info(
self,
info: ProcessInfo,
) -> Result<Self::IntoProcessType>
fn into_process_by_info( self, info: ProcessInfo, ) -> Result<Self::IntoProcessType>
Creates a process by its internal address
It will consume the kernel and not affect memory usage
If no process with the specified address can be found this function will return an Error.
This function can be useful for quickly accessing a process.
Source§fn module_address_list_callback(
&mut self,
callback: AddressCallback<'_>,
) -> Result<()>
fn module_address_list_callback( &mut self, callback: AddressCallback<'_>, ) -> Result<()>
Walks the kernel module list and calls the provided callback for each module structure address
§Arguments
callback
- where to pass each matching module to. This is an opaque callback.
Source§fn module_by_address(&mut self, address: Address) -> Result<ModuleInfo>
fn module_by_address(&mut self, address: Address) -> Result<ModuleInfo>
Retrieves a module by its structure address
§Arguments
address
- address where module’s information resides in
Source§fn primary_module_address(&mut self) -> Result<Address>
fn primary_module_address(&mut self) -> Result<Address>
Retrieves address of the primary module structure of the process
This will generally be for the initial executable that was run
Source§fn primary_module(&mut self) -> Result<ModuleInfo>
fn primary_module(&mut self) -> Result<ModuleInfo>
Retrieves information for the primary module of the process
This will generally be the initial executable that was run
Source§fn module_import_list_callback(
&mut self,
info: &ModuleInfo,
callback: ImportCallback<'_>,
) -> Result<()>
fn module_import_list_callback( &mut self, info: &ModuleInfo, callback: ImportCallback<'_>, ) -> Result<()>
Retrieves a list of all imports of a given module
Source§fn module_export_list_callback(
&mut self,
info: &ModuleInfo,
callback: ExportCallback<'_>,
) -> Result<()>
fn module_export_list_callback( &mut self, info: &ModuleInfo, callback: ExportCallback<'_>, ) -> Result<()>
Retrieves a list of all exports of a given module
Source§fn module_section_list_callback(
&mut self,
info: &ModuleInfo,
callback: SectionCallback<'_>,
) -> Result<()>
fn module_section_list_callback( &mut self, info: &ModuleInfo, callback: SectionCallback<'_>, ) -> Result<()>
Retrieves a list of all sections of a given module
type ProcessType<'a> = Win32Process<Fwd<&'a mut T>, Fwd<&'a mut V>, Win32VirtualTranslate>
type IntoProcessType = Win32Process<T, V, Win32VirtualTranslate>
Source§fn process_address_list(&mut self) -> Result<Vec<Address>, Error>
fn process_address_list(&mut self) -> Result<Vec<Address>, Error>
Source§fn process_info_list_callback(
&mut self,
callback: OpaqueCallback<'_, ProcessInfo>,
) -> Result<(), Error>
fn process_info_list_callback( &mut self, callback: OpaqueCallback<'_, ProcessInfo>, ) -> Result<(), Error>
Source§fn process_info_list(&mut self) -> Result<Vec<ProcessInfo>, Error>
fn process_info_list(&mut self) -> Result<Vec<ProcessInfo>, Error>
Source§fn process_info_by_name(&mut self, name: &str) -> Result<ProcessInfo, Error>
fn process_info_by_name(&mut self, name: &str) -> Result<ProcessInfo, Error>
Source§fn process_info_by_pid(&mut self, pid: u32) -> Result<ProcessInfo, Error>
fn process_info_by_pid(&mut self, pid: u32) -> Result<ProcessInfo, Error>
Source§fn process_by_address(
&mut self,
addr: Address,
) -> Result<Self::ProcessType<'_>, Error>
fn process_by_address( &mut self, addr: Address, ) -> Result<Self::ProcessType<'_>, Error>
Source§fn process_by_name(
&mut self,
name: &str,
) -> Result<Self::ProcessType<'_>, Error>
fn process_by_name( &mut self, name: &str, ) -> Result<Self::ProcessType<'_>, Error>
Source§fn process_by_pid(&mut self, pid: u32) -> Result<Self::ProcessType<'_>, Error>
fn process_by_pid(&mut self, pid: u32) -> Result<Self::ProcessType<'_>, Error>
Source§fn into_process_by_address(
self,
addr: Address,
) -> Result<Self::IntoProcessType, Error>where
Self: Sized,
fn into_process_by_address(
self,
addr: Address,
) -> Result<Self::IntoProcessType, Error>where
Self: Sized,
Source§fn into_process_by_name(
self,
name: &str,
) -> Result<Self::IntoProcessType, Error>where
Self: Sized,
fn into_process_by_name(
self,
name: &str,
) -> Result<Self::IntoProcessType, Error>where
Self: Sized,
Source§fn into_process_by_pid(self, pid: u32) -> Result<Self::IntoProcessType, Error>where
Self: Sized,
fn into_process_by_pid(self, pid: u32) -> Result<Self::IntoProcessType, Error>where
Self: Sized,
Source§fn module_list_callback(
&mut self,
callback: OpaqueCallback<'_, ModuleInfo>,
) -> Result<(), Error>
fn module_list_callback( &mut self, callback: OpaqueCallback<'_, ModuleInfo>, ) -> Result<(), Error>
Source§fn module_by_name(&mut self, name: &str) -> Result<ModuleInfo, Error>
fn module_by_name(&mut self, name: &str) -> Result<ModuleInfo, Error>
Source§fn module_list(&mut self) -> Result<Vec<ModuleInfo>, Error>
fn module_list(&mut self) -> Result<Vec<ModuleInfo>, Error>
Source§fn module_import_list(
&mut self,
info: &ModuleInfo,
) -> Result<Vec<ImportInfo>, Error>
fn module_import_list( &mut self, info: &ModuleInfo, ) -> Result<Vec<ImportInfo>, Error>
Source§fn module_export_list(
&mut self,
info: &ModuleInfo,
) -> Result<Vec<ExportInfo>, Error>
fn module_export_list( &mut self, info: &ModuleInfo, ) -> Result<Vec<ExportInfo>, Error>
Source§fn module_section_list(
&mut self,
info: &ModuleInfo,
) -> Result<Vec<SectionInfo>, Error>
fn module_section_list( &mut self, info: &ModuleInfo, ) -> Result<Vec<SectionInfo>, Error>
Source§fn module_import_by_name(
&mut self,
info: &ModuleInfo,
name: &str,
) -> Result<ImportInfo, Error>
fn module_import_by_name( &mut self, info: &ModuleInfo, name: &str, ) -> Result<ImportInfo, Error>
Source§fn module_export_by_name(
&mut self,
info: &ModuleInfo,
name: &str,
) -> Result<ExportInfo, Error>
fn module_export_by_name( &mut self, info: &ModuleInfo, name: &str, ) -> Result<ExportInfo, Error>
Source§fn module_section_by_name(
&mut self,
info: &ModuleInfo,
name: &str,
) -> Result<SectionInfo, Error>
fn module_section_by_name( &mut self, info: &ModuleInfo, name: &str, ) -> Result<SectionInfo, Error>
Source§impl<T: 'static + PhysicalMemory + Clone, V: 'static + VirtualTranslate2 + Clone> OsKeyboard for Win32Kernel<T, V>
impl<T: 'static + PhysicalMemory + Clone, V: 'static + VirtualTranslate2 + Clone> OsKeyboard for Win32Kernel<T, V>
type KeyboardType<'a> = Win32Keyboard<VirtualDma<Fwd<&'a mut T>, Fwd<&'a mut V>, Win32VirtualTranslate>>
type IntoKeyboardType = Win32Keyboard<VirtualDma<T, V, Win32VirtualTranslate>>
fn keyboard(&mut self) -> Result<Self::KeyboardType<'_>>
fn into_keyboard(self) -> Result<Self::IntoKeyboardType>
Source§impl<T: PhysicalMemory, V: VirtualTranslate2> PhysicalMemory for Win32Kernel<T, V>
impl<T: PhysicalMemory, V: VirtualTranslate2> PhysicalMemory for Win32Kernel<T, V>
fn phys_read_raw_iter( &mut self, data: PhysicalReadMemOps<'_, '_, '_, '_>, ) -> Result<()>
fn phys_write_raw_iter( &mut self, data: PhysicalWriteMemOps<'_, '_, '_, '_>, ) -> Result<()>
Source§fn metadata(&self) -> PhysicalMemoryMetadata
fn metadata(&self) -> PhysicalMemoryMetadata
Source§fn set_mem_map(&mut self, mem_map: &[PhysicalMemoryMapping])
fn set_mem_map(&mut self, mem_map: &[PhysicalMemoryMapping])
fn phys_read_into<T>( &mut self, addr: PhysicalAddress, out: &mut T, ) -> Result<(), Error>
fn phys_write<T>( &mut self, addr: PhysicalAddress, data: &T, ) -> Result<(), Error>
fn into_phys_view(self) -> PhysicalMemoryView<Self>where
Self: Sized,
fn phys_view(&mut self) -> PhysicalMemoryView<Fwd<&mut Self>>where
Self: Sized,
fn into_mem_view(self) -> PhysicalMemoryView<Self>where
Self: Sized,
fn mem_view(&mut self) -> PhysicalMemoryView<Fwd<&mut Self>>where
Self: Sized,
Source§impl<T: PhysicalMemory, V: VirtualTranslate2> VirtualTranslate for Win32Kernel<T, V>
impl<T: PhysicalMemory, V: VirtualTranslate2> VirtualTranslate for Win32Kernel<T, V>
Source§fn virt_to_phys_list(
&mut self,
addrs: &[VtopRange],
out: VirtualTranslationCallback<'_>,
out_fail: VirtualTranslationFailCallback<'_>,
)
fn virt_to_phys_list( &mut self, addrs: &[VtopRange], out: VirtualTranslationCallback<'_>, out_fail: VirtualTranslationFailCallback<'_>, )
Source§fn virt_to_phys_range(
&mut self,
start: Address,
end: Address,
out: OpaqueCallback<'_, VirtualTranslation>,
)
fn virt_to_phys_range( &mut self, start: Address, end: Address, out: OpaqueCallback<'_, VirtualTranslation>, )
Source§fn virt_translation_map_range(
&mut self,
start: Address,
end: Address,
out: OpaqueCallback<'_, VirtualTranslation>,
)
fn virt_translation_map_range( &mut self, start: Address, end: Address, out: OpaqueCallback<'_, VirtualTranslation>, )
Source§fn virt_page_map_range(
&mut self,
gap_size: i64,
start: Address,
end: Address,
out: OpaqueCallback<'_, CTup3<Address, u64, PageType>>,
)
fn virt_page_map_range( &mut self, gap_size: i64, start: Address, end: Address, out: OpaqueCallback<'_, CTup3<Address, u64, PageType>>, )
Source§fn virt_to_phys(&mut self, address: Address) -> Result<PhysicalAddress, Error>
fn virt_to_phys(&mut self, address: Address) -> Result<PhysicalAddress, Error>
Source§fn virt_page_info(&mut self, addr: Address) -> Result<Page, Error>
fn virt_page_info(&mut self, addr: Address) -> Result<Page, Error>
Source§fn virt_page_map_range_vec(
&mut self,
gap_size: i64,
start: Address,
end: Address,
) -> Vec<CTup3<Address, u64, PageType>>
fn virt_page_map_range_vec( &mut self, gap_size: i64, start: Address, end: Address, ) -> Vec<CTup3<Address, u64, PageType>>
Source§fn virt_translation_map(&mut self, out: OpaqueCallback<'_, VirtualTranslation>)
fn virt_translation_map(&mut self, out: OpaqueCallback<'_, VirtualTranslation>)
Source§fn virt_translation_map_vec(&mut self) -> Vec<VirtualTranslation>
fn virt_translation_map_vec(&mut self) -> Vec<VirtualTranslation>
Source§fn phys_to_virt(&mut self, phys: Address) -> Option<Address>
fn phys_to_virt(&mut self, phys: Address) -> Option<Address>
Source§fn phys_to_virt_vec(&mut self, phys: Address) -> Vec<Address>
fn phys_to_virt_vec(&mut self, phys: Address) -> Vec<Address>
Source§fn virt_page_map(
&mut self,
gap_size: i64,
out: OpaqueCallback<'_, CTup3<Address, u64, PageType>>,
)
fn virt_page_map( &mut self, gap_size: i64, out: OpaqueCallback<'_, CTup3<Address, u64, PageType>>, )
Auto Trait Implementations§
impl<T, V> !Freeze for Win32Kernel<T, V>
impl<T, V> !RefUnwindSafe for Win32Kernel<T, V>
impl<T, V> Send for Win32Kernel<T, V>
impl<T, V> !Sync for Win32Kernel<T, V>
impl<T, V> Unpin for Win32Kernel<T, V>
impl<T, V> !UnwindSafe for Win32Kernel<T, V>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<'a, T> BorrowOwned<'a> for Twhere
T: 'a + Clone,
impl<'a, T> BorrowOwned<'a> for Twhere
T: 'a + Clone,
fn r_borrow( this: &'a <T as BorrowOwned<'a>>::ROwned, ) -> <T as BorrowOwned<'a>>::RBorrowed
fn r_to_owned( this: <T as BorrowOwned<'a>>::RBorrowed, ) -> <T as BorrowOwned<'a>>::ROwned
fn deref_borrowed(this: &<T as BorrowOwned<'a>>::RBorrowed) -> &T
fn deref_owned(this: &<T as BorrowOwned<'a>>::ROwned) -> &T
fn from_cow_borrow(this: &'a T) -> <T as BorrowOwned<'a>>::RBorrowed
fn from_cow_owned(this: <T as ToOwned>::Owned) -> <T as BorrowOwned<'a>>::ROwned
fn into_cow_borrow(this: <T as BorrowOwned<'a>>::RBorrowed) -> &'a T
fn into_cow_owned(this: <T as BorrowOwned<'a>>::ROwned) -> <T as ToOwned>::Owned
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> GetWithMetadata for T
impl<T> GetWithMetadata for T
Source§type ForSelf = WithMetadata_<T, T>
type ForSelf = WithMetadata_<T, T>
WithMetadata_<Self, Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
Source§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
offset
. Read moreSource§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
offset
. Read moreSource§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
offset
. Read moreSource§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
offset
. Read moreSource§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
offset
) with value
,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
Source§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
offset
) with value
,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
Source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
Source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
piped
except that the function takes &Self
Useful for functions that take &Self
instead of Self
. Read moreSource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
piped
, except that the function takes &mut Self
.
Useful for functions that take &mut Self
instead of Self
.Source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Source§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
AsRef
,
using the turbofish .as_ref_::<_>()
syntax. Read more