diff --git a/ch9/help.html b/ch9/help.html index 26794106a..b36e5005a 100644 --- a/ch9/help.html +++ b/ch9/help.html @@ -1 +1,2 @@ -Rustdoc help

Rustdoc help

Back
\ No newline at end of file +Help +

Rustdoc help

Back
\ No newline at end of file diff --git a/ch9/implementors/core/clone/trait.Clone.js b/ch9/implementors/core/clone/trait.Clone.js deleted file mode 100644 index 808fad4e7..000000000 --- a/ch9/implementors/core/clone/trait.Clone.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Clone for RingBufferStatus"],["impl Clone for PhysAddr"],["impl Clone for MCR"],["impl Clone for PTEFlags"],["impl Clone for VirtPageNum"],["impl Clone for IER"],["impl<T> Clone for SimpleRange<T>where\n T: StepByOne + Copy + PartialEq + PartialOrd + Debug + Clone,"],["impl Clone for PhysPageNum"],["impl Clone for TaskStatus"],["impl Clone for IntrTargetPriority"],["impl Clone for PageTableEntry"],["impl Clone for OpenFlags"],["impl Clone for VirtAddr"],["impl Clone for LSR"],["impl Clone for MapType"],["impl Clone for SignalFlags"],["impl Clone for MapPermission"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/cmp/trait.Eq.js b/ch9/implementors/core/cmp/trait.Eq.js deleted file mode 100644 index 2db888f95..000000000 --- a/ch9/implementors/core/cmp/trait.Eq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Eq for IER"],["impl Eq for LSR"],["impl Eq for VirtPageNum"],["impl Eq for TimerCondVar"],["impl Eq for OpenFlags"],["impl Eq for PTEFlags"],["impl Eq for SignalFlags"],["impl Eq for MCR"],["impl Eq for PhysAddr"],["impl Eq for MapPermission"],["impl Eq for PhysPageNum"],["impl Eq for VirtAddr"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/cmp/trait.Ord.js b/ch9/implementors/core/cmp/trait.Ord.js deleted file mode 100644 index da0d5f386..000000000 --- a/ch9/implementors/core/cmp/trait.Ord.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Ord for SignalFlags"],["impl Ord for LSR"],["impl Ord for TimerCondVar"],["impl Ord for IER"],["impl Ord for PhysPageNum"],["impl Ord for PhysAddr"],["impl Ord for PTEFlags"],["impl Ord for OpenFlags"],["impl Ord for VirtPageNum"],["impl Ord for VirtAddr"],["impl Ord for MapPermission"],["impl Ord for MCR"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/cmp/trait.PartialEq.js b/ch9/implementors/core/cmp/trait.PartialEq.js deleted file mode 100644 index ce4f5de56..000000000 --- a/ch9/implementors/core/cmp/trait.PartialEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl PartialEq<MapType> for MapType"],["impl PartialEq<VirtAddr> for VirtAddr"],["impl PartialEq<IER> for IER"],["impl PartialEq<PTEFlags> for PTEFlags"],["impl PartialEq<TaskStatus> for TaskStatus"],["impl PartialEq<RingBufferStatus> for RingBufferStatus"],["impl PartialEq<PhysPageNum> for PhysPageNum"],["impl PartialEq<PhysAddr> for PhysAddr"],["impl PartialEq<VirtPageNum> for VirtPageNum"],["impl PartialEq<MapPermission> for MapPermission"],["impl PartialEq<OpenFlags> for OpenFlags"],["impl PartialEq<TimerCondVar> for TimerCondVar"],["impl PartialEq<MCR> for MCR"],["impl PartialEq<LSR> for LSR"],["impl PartialEq<SignalFlags> for SignalFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/cmp/trait.PartialOrd.js b/ch9/implementors/core/cmp/trait.PartialOrd.js deleted file mode 100644 index 9d56da51f..000000000 --- a/ch9/implementors/core/cmp/trait.PartialOrd.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl PartialOrd<OpenFlags> for OpenFlags"],["impl PartialOrd<SignalFlags> for SignalFlags"],["impl PartialOrd<VirtAddr> for VirtAddr"],["impl PartialOrd<TimerCondVar> for TimerCondVar"],["impl PartialOrd<VirtPageNum> for VirtPageNum"],["impl PartialOrd<IER> for IER"],["impl PartialOrd<PTEFlags> for PTEFlags"],["impl PartialOrd<LSR> for LSR"],["impl PartialOrd<MapPermission> for MapPermission"],["impl PartialOrd<MCR> for MCR"],["impl PartialOrd<PhysPageNum> for PhysPageNum"],["impl PartialOrd<PhysAddr> for PhysAddr"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/convert/trait.From.js b/ch9/implementors/core/convert/trait.From.js deleted file mode 100644 index ab104b9b8..000000000 --- a/ch9/implementors/core/convert/trait.From.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl From<PhysAddr> for usize"],["impl From<PhysAddr> for PhysPageNum"],["impl From<usize> for PhysAddr"],["impl From<usize> for PhysPageNum"],["impl From<PhysPageNum> for usize"],["impl From<VirtAddr> for VirtPageNum"],["impl From<VirtPageNum> for VirtAddr"],["impl From<usize> for VirtPageNum"],["impl From<VirtAddr> for usize"],["impl From<usize> for VirtAddr"],["impl From<PhysPageNum> for PhysAddr"],["impl From<VirtPageNum> for usize"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/fmt/trait.Binary.js b/ch9/implementors/core/fmt/trait.Binary.js deleted file mode 100644 index 7962110ad..000000000 --- a/ch9/implementors/core/fmt/trait.Binary.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Binary for IER"],["impl Binary for SignalFlags"],["impl Binary for PTEFlags"],["impl Binary for LSR"],["impl Binary for MCR"],["impl Binary for OpenFlags"],["impl Binary for MapPermission"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/fmt/trait.Debug.js b/ch9/implementors/core/fmt/trait.Debug.js deleted file mode 100644 index 173ca3ba9..000000000 --- a/ch9/implementors/core/fmt/trait.Debug.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Debug for OpenFlags"],["impl Debug for MapType"],["impl Debug for PhysPageNum"],["impl Debug for TrapContext"],["impl Debug for VirtAddr"],["impl Debug for PTEFlags"],["impl Debug for MapPermission"],["impl Debug for PhysAddr"],["impl Debug for MCR"],["impl Debug for VirtPageNum"],["impl Debug for SignalFlags"],["impl Debug for IER"],["impl Debug for FrameTracker"],["impl Debug for LSR"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/fmt/trait.LowerHex.js b/ch9/implementors/core/fmt/trait.LowerHex.js deleted file mode 100644 index b668d3621..000000000 --- a/ch9/implementors/core/fmt/trait.LowerHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl LowerHex for SignalFlags"],["impl LowerHex for IER"],["impl LowerHex for MapPermission"],["impl LowerHex for PTEFlags"],["impl LowerHex for OpenFlags"],["impl LowerHex for LSR"],["impl LowerHex for MCR"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/fmt/trait.Octal.js b/ch9/implementors/core/fmt/trait.Octal.js deleted file mode 100644 index bbd7b2897..000000000 --- a/ch9/implementors/core/fmt/trait.Octal.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Octal for LSR"],["impl Octal for OpenFlags"],["impl Octal for MapPermission"],["impl Octal for MCR"],["impl Octal for IER"],["impl Octal for PTEFlags"],["impl Octal for SignalFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/fmt/trait.UpperHex.js b/ch9/implementors/core/fmt/trait.UpperHex.js deleted file mode 100644 index 06286aca0..000000000 --- a/ch9/implementors/core/fmt/trait.UpperHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl UpperHex for OpenFlags"],["impl UpperHex for IER"],["impl UpperHex for MCR"],["impl UpperHex for MapPermission"],["impl UpperHex for PTEFlags"],["impl UpperHex for SignalFlags"],["impl UpperHex for LSR"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/hash/trait.Hash.js b/ch9/implementors/core/hash/trait.Hash.js deleted file mode 100644 index f607ed914..000000000 --- a/ch9/implementors/core/hash/trait.Hash.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Hash for IER"],["impl Hash for LSR"],["impl Hash for MapPermission"],["impl Hash for PTEFlags"],["impl Hash for MCR"],["impl Hash for OpenFlags"],["impl Hash for SignalFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/iter/traits/collect/trait.Extend.js b/ch9/implementors/core/iter/traits/collect/trait.Extend.js deleted file mode 100644 index 23613f7d1..000000000 --- a/ch9/implementors/core/iter/traits/collect/trait.Extend.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Extend<MCR> for MCR"],["impl Extend<SignalFlags> for SignalFlags"],["impl Extend<IER> for IER"],["impl Extend<LSR> for LSR"],["impl Extend<OpenFlags> for OpenFlags"],["impl Extend<MapPermission> for MapPermission"],["impl Extend<PTEFlags> for PTEFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/iter/traits/collect/trait.FromIterator.js b/ch9/implementors/core/iter/traits/collect/trait.FromIterator.js deleted file mode 100644 index 3a0ed4bc8..000000000 --- a/ch9/implementors/core/iter/traits/collect/trait.FromIterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl FromIterator<IER> for IER"],["impl FromIterator<PTEFlags> for PTEFlags"],["impl FromIterator<MCR> for MCR"],["impl FromIterator<SignalFlags> for SignalFlags"],["impl FromIterator<OpenFlags> for OpenFlags"],["impl FromIterator<LSR> for LSR"],["impl FromIterator<MapPermission> for MapPermission"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/iter/traits/collect/trait.IntoIterator.js b/ch9/implementors/core/iter/traits/collect/trait.IntoIterator.js deleted file mode 100644 index 96c3063e6..000000000 --- a/ch9/implementors/core/iter/traits/collect/trait.IntoIterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl<T> IntoIterator for SimpleRange<T>where\n T: StepByOne + Copy + PartialEq + PartialOrd + Debug,"],["impl IntoIterator for UserBuffer"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/iter/traits/iterator/trait.Iterator.js b/ch9/implementors/core/iter/traits/iterator/trait.Iterator.js deleted file mode 100644 index 22d035f65..000000000 --- a/ch9/implementors/core/iter/traits/iterator/trait.Iterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl<T> Iterator for SimpleRangeIterator<T>where\n T: StepByOne + Copy + PartialEq + PartialOrd + Debug,"],["impl Iterator for UserBufferIterator"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Copy.js b/ch9/implementors/core/marker/trait.Copy.js deleted file mode 100644 index 3cf5908e6..000000000 --- a/ch9/implementors/core/marker/trait.Copy.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Copy for VirtAddr"],["impl Copy for MCR"],["impl Copy for PageTableEntry"],["impl Copy for MapType"],["impl Copy for OpenFlags"],["impl Copy for PhysAddr"],["impl Copy for RingBufferStatus"],["impl Copy for TaskStatus"],["impl Copy for SignalFlags"],["impl Copy for MapPermission"],["impl Copy for LSR"],["impl Copy for IER"],["impl Copy for PhysPageNum"],["impl Copy for IntrTargetPriority"],["impl Copy for PTEFlags"],["impl Copy for VirtPageNum"],["impl<T> Copy for SimpleRange<T>where\n T: StepByOne + Copy + PartialEq + PartialOrd + Debug + Copy,"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Freeze.js b/ch9/implementors/core/marker/trait.Freeze.js deleted file mode 100644 index 2cc0b7f9c..000000000 --- a/ch9/implementors/core/marker/trait.Freeze.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Freeze for Stdout",1,["os::console::Stdout"]],["impl !Freeze for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Freeze for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Freeze for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Freeze for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Freeze for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Freeze for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Freeze for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Freeze for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Freeze for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Freeze for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Freeze for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> !Freeze for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Freeze for UART",1,["os::drivers::chardev::UART"]],["impl Freeze for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl !Freeze for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Freeze for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl !Freeze for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Freeze for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Freeze for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Freeze for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl !Freeze for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Freeze for PLIC",1,["os::drivers::plic::PLIC"]],["impl Freeze for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl !Freeze for OSInode",1,["os::fs::inode::OSInode"]],["impl Freeze for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Freeze for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Freeze for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Freeze for Pipe",1,["os::fs::pipe::Pipe"]],["impl Freeze for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Freeze for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Freeze for Stdin",1,["os::fs::stdio::Stdin"]],["impl Freeze for Stdout",1,["os::fs::stdio::Stdout"]],["impl Freeze for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Freeze for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Freeze for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Freeze for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Freeze for SimpleRange<T>where\n T: Freeze,",1,["os::mm::address::SimpleRange"]],["impl<T> Freeze for SimpleRangeIterator<T>where\n T: Freeze,",1,["os::mm::address::SimpleRangeIterator"]],["impl Freeze for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Freeze for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Freeze for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Freeze for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Freeze for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Freeze for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Freeze for MapType",1,["os::mm::memory_set::MapType"]],["impl Freeze for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Freeze for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Freeze for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Freeze for PageTable",1,["os::mm::page_table::PageTable"]],["impl Freeze for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Freeze for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Freeze for Port",1,["os::net::port_table::Port"]],["impl Freeze for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Freeze for PortFd",1,["os::net::port_table::PortFd"]],["impl Freeze for Socket",1,["os::net::socket::Socket"]],["impl Freeze for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Freeze for TCP",1,["os::net::tcp::TCP"]],["impl Freeze for UDP",1,["os::net::udp::UDP"]],["impl !Freeze for NetStack",1,["os::net::NetStack"]],["impl Freeze for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl !Freeze for Condvar",1,["os::sync::condvar::Condvar"]],["impl Freeze for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl !Freeze for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl !Freeze for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Freeze for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl !Freeze for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Freeze for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> !Freeze for UPSafeCellRaw<T>",1,["os::sync::up::UPSafeCellRaw"]],["impl Freeze for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Freeze for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> !Freeze for UPIntrFreeCell<T>",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> Freeze for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Freeze for TaskContext",1,["os::task::context::TaskContext"]],["impl Freeze for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Freeze for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Freeze for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Freeze for PidHandle",1,["os::task::id::PidHandle"]],["impl Freeze for KernelStack",1,["os::task::id::KernelStack"]],["impl Freeze for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Freeze for TaskManager",1,["os::task::manager::TaskManager"]],["impl Freeze for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Freeze for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl !Freeze for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Freeze for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Freeze for Processor",1,["os::task::processor::Processor"]],["impl Freeze for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Freeze for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl !Freeze for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Freeze for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Freeze for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Freeze for INITPROC",1,["os::task::INITPROC"]],["impl Freeze for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Freeze for TIMERS",1,["os::timer::TIMERS"]],["impl Freeze for TrapContext",1,["os::trap::context::TrapContext"]],["impl Freeze for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.StructuralEq.js b/ch9/implementors/core/marker/trait.StructuralEq.js deleted file mode 100644 index 8f884851d..000000000 --- a/ch9/implementors/core/marker/trait.StructuralEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl StructuralEq for OpenFlags"],["impl StructuralEq for VirtPageNum"],["impl StructuralEq for PhysPageNum"],["impl StructuralEq for VirtAddr"],["impl StructuralEq for IER"],["impl StructuralEq for SignalFlags"],["impl StructuralEq for MapPermission"],["impl StructuralEq for LSR"],["impl StructuralEq for PTEFlags"],["impl StructuralEq for MCR"],["impl StructuralEq for PhysAddr"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.StructuralPartialEq.js b/ch9/implementors/core/marker/trait.StructuralPartialEq.js deleted file mode 100644 index a35b5e6e8..000000000 --- a/ch9/implementors/core/marker/trait.StructuralPartialEq.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl StructuralPartialEq for RingBufferStatus"],["impl StructuralPartialEq for OpenFlags"],["impl StructuralPartialEq for MCR"],["impl StructuralPartialEq for TaskStatus"],["impl StructuralPartialEq for PhysPageNum"],["impl StructuralPartialEq for VirtAddr"],["impl StructuralPartialEq for PTEFlags"],["impl StructuralPartialEq for PhysAddr"],["impl StructuralPartialEq for IER"],["impl StructuralPartialEq for LSR"],["impl StructuralPartialEq for VirtPageNum"],["impl StructuralPartialEq for SignalFlags"],["impl StructuralPartialEq for MapPermission"],["impl StructuralPartialEq for MapType"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Sync.js b/ch9/implementors/core/marker/trait.Sync.js deleted file mode 100644 index 016b254ad..000000000 --- a/ch9/implementors/core/marker/trait.Sync.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Sync for Stdout",1,["os::console::Stdout"]],["impl Sync for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Sync for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Sync for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Sync for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Sync for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Sync for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Sync for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Sync for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Sync for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Sync for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Sync for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> Sync for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Sync for UART",1,["os::drivers::chardev::UART"]],["impl Sync for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl Sync for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Sync for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl Sync for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Sync for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Sync for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Sync for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl Sync for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Sync for PLIC",1,["os::drivers::plic::PLIC"]],["impl Sync for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl Sync for OSInode",1,["os::fs::inode::OSInode"]],["impl Sync for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Sync for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Sync for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Sync for Pipe",1,["os::fs::pipe::Pipe"]],["impl Sync for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Sync for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Sync for Stdin",1,["os::fs::stdio::Stdin"]],["impl Sync for Stdout",1,["os::fs::stdio::Stdout"]],["impl Sync for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Sync for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Sync for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Sync for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Sync for SimpleRange<T>where\n T: Sync,",1,["os::mm::address::SimpleRange"]],["impl<T> Sync for SimpleRangeIterator<T>where\n T: Sync,",1,["os::mm::address::SimpleRangeIterator"]],["impl Sync for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Sync for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Sync for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Sync for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Sync for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Sync for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Sync for MapType",1,["os::mm::memory_set::MapType"]],["impl Sync for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Sync for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Sync for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Sync for PageTable",1,["os::mm::page_table::PageTable"]],["impl Sync for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Sync for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Sync for Port",1,["os::net::port_table::Port"]],["impl Sync for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Sync for PortFd",1,["os::net::port_table::PortFd"]],["impl Sync for Socket",1,["os::net::socket::Socket"]],["impl Sync for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Sync for TCP",1,["os::net::tcp::TCP"]],["impl Sync for UDP",1,["os::net::udp::UDP"]],["impl Sync for NetStack",1,["os::net::NetStack"]],["impl Sync for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl Sync for Condvar",1,["os::sync::condvar::Condvar"]],["impl Sync for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl Sync for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl Sync for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Sync for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl Sync for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Sync for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl Sync for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Sync for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<'a, T> !Sync for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Sync for TaskContext",1,["os::task::context::TaskContext"]],["impl Sync for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Sync for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Sync for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Sync for PidHandle",1,["os::task::id::PidHandle"]],["impl Sync for KernelStack",1,["os::task::id::KernelStack"]],["impl Sync for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Sync for TaskManager",1,["os::task::manager::TaskManager"]],["impl Sync for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Sync for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl Sync for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Sync for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Sync for Processor",1,["os::task::processor::Processor"]],["impl Sync for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Sync for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl Sync for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Sync for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Sync for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Sync for INITPROC",1,["os::task::INITPROC"]],["impl Sync for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Sync for TIMERS",1,["os::timer::TIMERS"]],["impl Sync for TrapContext",1,["os::trap::context::TrapContext"]],["impl Sync for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]],["impl<T> Sync for UPIntrFreeCell<T>"],["impl<T> Sync for UPSafeCellRaw<T>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/arith/trait.Sub.js b/ch9/implementors/core/ops/arith/trait.Sub.js deleted file mode 100644 index 215eec21e..000000000 --- a/ch9/implementors/core/ops/arith/trait.Sub.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Sub<PTEFlags> for PTEFlags"],["impl Sub<SignalFlags> for SignalFlags"],["impl Sub<LSR> for LSR"],["impl Sub<OpenFlags> for OpenFlags"],["impl Sub<IER> for IER"],["impl Sub<MCR> for MCR"],["impl Sub<MapPermission> for MapPermission"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/arith/trait.SubAssign.js b/ch9/implementors/core/ops/arith/trait.SubAssign.js deleted file mode 100644 index a24da9f52..000000000 --- a/ch9/implementors/core/ops/arith/trait.SubAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl SubAssign<OpenFlags> for OpenFlags"],["impl SubAssign<IER> for IER"],["impl SubAssign<LSR> for LSR"],["impl SubAssign<SignalFlags> for SignalFlags"],["impl SubAssign<MCR> for MCR"],["impl SubAssign<MapPermission> for MapPermission"],["impl SubAssign<PTEFlags> for PTEFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/bit/trait.BitAnd.js b/ch9/implementors/core/ops/bit/trait.BitAnd.js deleted file mode 100644 index bd74094b2..000000000 --- a/ch9/implementors/core/ops/bit/trait.BitAnd.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl BitAnd<PTEFlags> for PTEFlags"],["impl BitAnd<SignalFlags> for SignalFlags"],["impl BitAnd<OpenFlags> for OpenFlags"],["impl BitAnd<MapPermission> for MapPermission"],["impl BitAnd<IER> for IER"],["impl BitAnd<MCR> for MCR"],["impl BitAnd<LSR> for LSR"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/bit/trait.BitAndAssign.js b/ch9/implementors/core/ops/bit/trait.BitAndAssign.js deleted file mode 100644 index 4e221ca32..000000000 --- a/ch9/implementors/core/ops/bit/trait.BitAndAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl BitAndAssign<OpenFlags> for OpenFlags"],["impl BitAndAssign<IER> for IER"],["impl BitAndAssign<PTEFlags> for PTEFlags"],["impl BitAndAssign<MapPermission> for MapPermission"],["impl BitAndAssign<SignalFlags> for SignalFlags"],["impl BitAndAssign<MCR> for MCR"],["impl BitAndAssign<LSR> for LSR"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/bit/trait.BitOr.js b/ch9/implementors/core/ops/bit/trait.BitOr.js deleted file mode 100644 index dc35307e6..000000000 --- a/ch9/implementors/core/ops/bit/trait.BitOr.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl BitOr<MCR> for MCR"],["impl BitOr<MapPermission> for MapPermission"],["impl BitOr<OpenFlags> for OpenFlags"],["impl BitOr<LSR> for LSR"],["impl BitOr<IER> for IER"],["impl BitOr<SignalFlags> for SignalFlags"],["impl BitOr<PTEFlags> for PTEFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/bit/trait.BitOrAssign.js b/ch9/implementors/core/ops/bit/trait.BitOrAssign.js deleted file mode 100644 index 5d0b65b50..000000000 --- a/ch9/implementors/core/ops/bit/trait.BitOrAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl BitOrAssign<LSR> for LSR"],["impl BitOrAssign<MCR> for MCR"],["impl BitOrAssign<IER> for IER"],["impl BitOrAssign<OpenFlags> for OpenFlags"],["impl BitOrAssign<MapPermission> for MapPermission"],["impl BitOrAssign<PTEFlags> for PTEFlags"],["impl BitOrAssign<SignalFlags> for SignalFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/bit/trait.BitXor.js b/ch9/implementors/core/ops/bit/trait.BitXor.js deleted file mode 100644 index 991a83a96..000000000 --- a/ch9/implementors/core/ops/bit/trait.BitXor.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl BitXor<LSR> for LSR"],["impl BitXor<SignalFlags> for SignalFlags"],["impl BitXor<OpenFlags> for OpenFlags"],["impl BitXor<MCR> for MCR"],["impl BitXor<MapPermission> for MapPermission"],["impl BitXor<PTEFlags> for PTEFlags"],["impl BitXor<IER> for IER"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/bit/trait.BitXorAssign.js b/ch9/implementors/core/ops/bit/trait.BitXorAssign.js deleted file mode 100644 index f45d294fd..000000000 --- a/ch9/implementors/core/ops/bit/trait.BitXorAssign.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl BitXorAssign<IER> for IER"],["impl BitXorAssign<SignalFlags> for SignalFlags"],["impl BitXorAssign<OpenFlags> for OpenFlags"],["impl BitXorAssign<MapPermission> for MapPermission"],["impl BitXorAssign<MCR> for MCR"],["impl BitXorAssign<PTEFlags> for PTEFlags"],["impl BitXorAssign<LSR> for LSR"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/bit/trait.Not.js b/ch9/implementors/core/ops/bit/trait.Not.js deleted file mode 100644 index bbaa804aa..000000000 --- a/ch9/implementors/core/ops/bit/trait.Not.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Not for SignalFlags"],["impl Not for LSR"],["impl Not for MCR"],["impl Not for MapPermission"],["impl Not for PTEFlags"],["impl Not for IER"],["impl Not for OpenFlags"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/deref/trait.Deref.js b/ch9/implementors/core/ops/deref/trait.Deref.js deleted file mode 100644 index 307efb2e3..000000000 --- a/ch9/implementors/core/ops/deref/trait.Deref.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Deref for BLOCK_DEVICE"],["impl Deref for TASK_MANAGER"],["impl Deref for PID_ALLOCATOR"],["impl Deref for LISTEN_TABLE"],["impl Deref for TIMERS"],["impl Deref for UART"],["impl Deref for FRAME_ALLOCATOR"],["impl Deref for GPU_DEVICE"],["impl Deref for INITPROC"],["impl Deref for NET_DEVICE"],["impl Deref for INTR_MASKING_INFO"],["impl Deref for PROCESSOR"],["impl<'a, T> Deref for UPIntrRefMut<'a, T>"],["impl Deref for QUEUE_FRAMES"],["impl Deref for PID2PCB"],["impl Deref for KERNEL_SPACE"],["impl Deref for KSTACK_ALLOCATOR"],["impl Deref for LOSE_NET_STACK"],["impl Deref for DEV_NON_BLOCKING_ACCESS"],["impl Deref for KEYBOARD_DEVICE"],["impl Deref for ROOT_INODE"],["impl Deref for SOCKET_TABLE"],["impl Deref for MOUSE_DEVICE"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/drop/trait.Drop.js b/ch9/implementors/core/ops/drop/trait.Drop.js deleted file mode 100644 index 9168db381..000000000 --- a/ch9/implementors/core/ops/drop/trait.Drop.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl Drop for TaskUserRes"],["impl Drop for UDP"],["impl Drop for TCP"],["impl Drop for PidHandle"],["impl Drop for KernelStack"],["impl Drop for PortFd"],["impl<'a, T> Drop for UPIntrRefMut<'a, T>"],["impl Drop for FrameTracker"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/ch9/implementors/core/panic/unwind_safe/trait.UnwindSafe.js deleted file mode 100644 index 919cb1cdb..000000000 --- a/ch9/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl UnwindSafe for Stdout",1,["os::console::Stdout"]],["impl !UnwindSafe for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl UnwindSafe for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl UnwindSafe for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl UnwindSafe for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl UnwindSafe for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl UnwindSafe for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl UnwindSafe for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl UnwindSafe for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl UnwindSafe for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl UnwindSafe for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl UnwindSafe for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> !UnwindSafe for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl UnwindSafe for UART",1,["os::drivers::chardev::UART"]],["impl UnwindSafe for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl !UnwindSafe for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl !UnwindSafe for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl !UnwindSafe for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl UnwindSafe for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl UnwindSafe for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl UnwindSafe for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl !UnwindSafe for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl UnwindSafe for PLIC",1,["os::drivers::plic::PLIC"]],["impl UnwindSafe for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl !UnwindSafe for OSInode",1,["os::fs::inode::OSInode"]],["impl !UnwindSafe for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl UnwindSafe for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl UnwindSafe for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl !UnwindSafe for Pipe",1,["os::fs::pipe::Pipe"]],["impl UnwindSafe for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl !UnwindSafe for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl UnwindSafe for Stdin",1,["os::fs::stdio::Stdin"]],["impl UnwindSafe for Stdout",1,["os::fs::stdio::Stdout"]],["impl UnwindSafe for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl UnwindSafe for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl UnwindSafe for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl UnwindSafe for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> UnwindSafe for SimpleRange<T>where\n T: UnwindSafe,",1,["os::mm::address::SimpleRange"]],["impl<T> UnwindSafe for SimpleRangeIterator<T>where\n T: UnwindSafe,",1,["os::mm::address::SimpleRangeIterator"]],["impl UnwindSafe for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl UnwindSafe for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl UnwindSafe for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl UnwindSafe for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl UnwindSafe for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl UnwindSafe for MapArea",1,["os::mm::memory_set::MapArea"]],["impl UnwindSafe for MapType",1,["os::mm::memory_set::MapType"]],["impl UnwindSafe for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl UnwindSafe for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl UnwindSafe for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl UnwindSafe for PageTable",1,["os::mm::page_table::PageTable"]],["impl !UnwindSafe for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl !UnwindSafe for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl !UnwindSafe for Port",1,["os::net::port_table::Port"]],["impl UnwindSafe for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl UnwindSafe for PortFd",1,["os::net::port_table::PortFd"]],["impl UnwindSafe for Socket",1,["os::net::socket::Socket"]],["impl UnwindSafe for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl UnwindSafe for TCP",1,["os::net::tcp::TCP"]],["impl UnwindSafe for UDP",1,["os::net::udp::UDP"]],["impl UnwindSafe for NetStack",1,["os::net::NetStack"]],["impl UnwindSafe for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl !UnwindSafe for Condvar",1,["os::sync::condvar::Condvar"]],["impl !UnwindSafe for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl UnwindSafe for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl !UnwindSafe for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl !UnwindSafe for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl !UnwindSafe for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl !UnwindSafe for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> UnwindSafe for UPSafeCellRaw<T>where\n T: UnwindSafe,",1,["os::sync::up::UPSafeCellRaw"]],["impl UnwindSafe for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl UnwindSafe for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> UnwindSafe for UPIntrFreeCell<T>where\n T: UnwindSafe,",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> !UnwindSafe for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl UnwindSafe for TaskContext",1,["os::task::context::TaskContext"]],["impl UnwindSafe for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl UnwindSafe for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl UnwindSafe for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl UnwindSafe for PidHandle",1,["os::task::id::PidHandle"]],["impl UnwindSafe for KernelStack",1,["os::task::id::KernelStack"]],["impl !UnwindSafe for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl !UnwindSafe for TaskManager",1,["os::task::manager::TaskManager"]],["impl UnwindSafe for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl UnwindSafe for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl !UnwindSafe for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl !UnwindSafe for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl !UnwindSafe for Processor",1,["os::task::processor::Processor"]],["impl UnwindSafe for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl UnwindSafe for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl !UnwindSafe for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl !UnwindSafe for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl UnwindSafe for TaskStatus",1,["os::task::task::TaskStatus"]],["impl UnwindSafe for INITPROC",1,["os::task::INITPROC"]],["impl !UnwindSafe for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl UnwindSafe for TIMERS",1,["os::timer::TIMERS"]],["impl UnwindSafe for TrapContext",1,["os::trap::context::TrapContext"]],["impl UnwindSafe for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/lazy_static/trait.LazyStatic.js b/ch9/implementors/lazy_static/trait.LazyStatic.js deleted file mode 100644 index ccc1c035a..000000000 --- a/ch9/implementors/lazy_static/trait.LazyStatic.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"os":[["impl LazyStatic for KEYBOARD_DEVICE"],["impl LazyStatic for LOSE_NET_STACK"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for INTR_MASKING_INFO"],["impl LazyStatic for TIMERS"],["impl LazyStatic for GPU_DEVICE"],["impl LazyStatic for LISTEN_TABLE"],["impl LazyStatic for DEV_NON_BLOCKING_ACCESS"],["impl LazyStatic for NET_DEVICE"],["impl LazyStatic for MOUSE_DEVICE"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for SOCKET_TABLE"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for UART"],["impl LazyStatic for PROCESSOR"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for INITPROC"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/os/all.html b/ch9/os/all.html index 261184bcf..b81cf072c 100644 --- a/ch9/os/all.html +++ b/ch9/os/all.html @@ -1 +1,2 @@ -List of all items in this crate

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

Statics

Constants

\ No newline at end of file +List of all items in this crate +

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

Statics

Constants

\ No newline at end of file diff --git a/ch9/os/board/constant.CLOCK_FREQ.html b/ch9/os/board/constant.CLOCK_FREQ.html index be383e669..024dfbc84 100644 --- a/ch9/os/board/constant.CLOCK_FREQ.html +++ b/ch9/os/board/constant.CLOCK_FREQ.html @@ -1 +1,2 @@ -CLOCK_FREQ in os::board - Rust

Constant os::board::CLOCK_FREQ

source ·
pub const CLOCK_FREQ: usize = 12500000;
\ No newline at end of file +CLOCK_FREQ in os::board - Rust +

Constant os::board::CLOCK_FREQ

source ·
pub const CLOCK_FREQ: usize = 12500000;
\ No newline at end of file diff --git a/ch9/os/board/constant.MMIO.html b/ch9/os/board/constant.MMIO.html index ec8fc9993..4853d2552 100644 --- a/ch9/os/board/constant.MMIO.html +++ b/ch9/os/board/constant.MMIO.html @@ -1 +1,2 @@ -MMIO in os::board - Rust

Constant os::board::MMIO

source ·
pub const MMIO: &[(usize, usize)];
\ No newline at end of file +MMIO in os::board - Rust +

Constant os::board::MMIO

source ·
pub const MMIO: &[(usize, usize)];
\ No newline at end of file diff --git a/ch9/os/board/constant.VIRTGPU_XRES.html b/ch9/os/board/constant.VIRTGPU_XRES.html index f617439bf..62ba5fd6d 100644 --- a/ch9/os/board/constant.VIRTGPU_XRES.html +++ b/ch9/os/board/constant.VIRTGPU_XRES.html @@ -1 +1,2 @@ -VIRTGPU_XRES in os::board - Rust

Constant os::board::VIRTGPU_XRES

source ·
pub const VIRTGPU_XRES: u32 = 1280;
\ No newline at end of file +VIRTGPU_XRES in os::board - Rust +

Constant os::board::VIRTGPU_XRES

source ·
pub const VIRTGPU_XRES: u32 = 1280;
\ No newline at end of file diff --git a/ch9/os/board/constant.VIRTGPU_YRES.html b/ch9/os/board/constant.VIRTGPU_YRES.html index 36b7dea2c..65a6452ef 100644 --- a/ch9/os/board/constant.VIRTGPU_YRES.html +++ b/ch9/os/board/constant.VIRTGPU_YRES.html @@ -1 +1,2 @@ -VIRTGPU_YRES in os::board - Rust

Constant os::board::VIRTGPU_YRES

source ·
pub const VIRTGPU_YRES: u32 = 800;
\ No newline at end of file +VIRTGPU_YRES in os::board - Rust +

Constant os::board::VIRTGPU_YRES

source ·
pub const VIRTGPU_YRES: u32 = 800;
\ No newline at end of file diff --git a/ch9/os/board/constant.VIRT_PLIC.html b/ch9/os/board/constant.VIRT_PLIC.html index 05828e377..778831314 100644 --- a/ch9/os/board/constant.VIRT_PLIC.html +++ b/ch9/os/board/constant.VIRT_PLIC.html @@ -1 +1,2 @@ -VIRT_PLIC in os::board - Rust

Constant os::board::VIRT_PLIC

source ·
pub const VIRT_PLIC: usize = 0xC00_0000;
\ No newline at end of file +VIRT_PLIC in os::board - Rust +

Constant os::board::VIRT_PLIC

source ·
pub const VIRT_PLIC: usize = 0xC00_0000;
\ No newline at end of file diff --git a/ch9/os/board/constant.VIRT_UART.html b/ch9/os/board/constant.VIRT_UART.html index 98a1135e4..5e844b6da 100644 --- a/ch9/os/board/constant.VIRT_UART.html +++ b/ch9/os/board/constant.VIRT_UART.html @@ -1 +1,2 @@ -VIRT_UART in os::board - Rust

Constant os::board::VIRT_UART

source ·
pub const VIRT_UART: usize = 0x1000_0000;
\ No newline at end of file +VIRT_UART in os::board - Rust +

Constant os::board::VIRT_UART

source ·
pub const VIRT_UART: usize = 0x1000_0000;
\ No newline at end of file diff --git a/ch9/os/board/fn.device_init.html b/ch9/os/board/fn.device_init.html index 1e38222a0..895e0c9d0 100644 --- a/ch9/os/board/fn.device_init.html +++ b/ch9/os/board/fn.device_init.html @@ -1 +1,2 @@ -device_init in os::board - Rust

Function os::board::device_init

source ·
pub fn device_init()
\ No newline at end of file +device_init in os::board - Rust +

Function os::board::device_init

source ·
pub fn device_init()
\ No newline at end of file diff --git a/ch9/os/board/fn.irq_handler.html b/ch9/os/board/fn.irq_handler.html index c2d32e8d7..92e2e0fba 100644 --- a/ch9/os/board/fn.irq_handler.html +++ b/ch9/os/board/fn.irq_handler.html @@ -1 +1,2 @@ -irq_handler in os::board - Rust

Function os::board::irq_handler

source ·
pub fn irq_handler()
\ No newline at end of file +irq_handler in os::board - Rust +

Function os::board::irq_handler

source ·
pub fn irq_handler()
\ No newline at end of file diff --git a/ch9/os/board/index.html b/ch9/os/board/index.html index 4370556e4..385bb34a1 100644 --- a/ch9/os/board/index.html +++ b/ch9/os/board/index.html @@ -1 +1,2 @@ -os::board - Rust

Module os::board

source ·

Constants

Functions

Type Aliases

\ No newline at end of file +os::board - Rust +

Module os::board

source ·

Constants

Functions

Type Aliases

\ No newline at end of file diff --git a/ch9/os/board/type.BlockDeviceImpl.html b/ch9/os/board/type.BlockDeviceImpl.html index daa0332bd..b44abbbff 100644 --- a/ch9/os/board/type.BlockDeviceImpl.html +++ b/ch9/os/board/type.BlockDeviceImpl.html @@ -1,4 +1,5 @@ -BlockDeviceImpl in os::board - Rust

Type Alias os::board::BlockDeviceImpl

source ·
pub type BlockDeviceImpl = VirtIOBlock;

Aliased Type§

struct BlockDeviceImpl {
+BlockDeviceImpl in os::board - Rust
+    

Type Alias os::board::BlockDeviceImpl

source ·
pub type BlockDeviceImpl = VirtIOBlock;

Aliased Type§

struct BlockDeviceImpl {
     virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>,
-    condvars: BTreeMap<u16, Condvar, Global>,
-}

Fields§

§virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>§condvars: BTreeMap<u16, Condvar, Global>

Implementations§

source§

impl VirtIOBlock

source

pub fn new() -> Self

Trait Implementations§

source§

impl BlockDevice for VirtIOBlock

source§

fn read_block(&self, block_id: usize, buf: &mut [u8])

source§

fn write_block(&self, block_id: usize, buf: &[u8])

source§

fn handle_irq(&self)

\ No newline at end of file + condvars: BTreeMap<u16, Condvar>, +}

Fields§

§virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>§condvars: BTreeMap<u16, Condvar>
\ No newline at end of file diff --git a/ch9/os/board/type.CharDeviceImpl.html b/ch9/os/board/type.CharDeviceImpl.html index 0b7934c94..c02a54b80 100644 --- a/ch9/os/board/type.CharDeviceImpl.html +++ b/ch9/os/board/type.CharDeviceImpl.html @@ -1,4 +1,5 @@ -CharDeviceImpl in os::board - Rust

Type Alias os::board::CharDeviceImpl

source ·
pub type CharDeviceImpl = NS16550a<VIRT_UART>;

Aliased Type§

struct CharDeviceImpl {
+CharDeviceImpl in os::board - Rust
+    

Type Alias os::board::CharDeviceImpl

source ·
pub type CharDeviceImpl = NS16550a<VIRT_UART>;

Aliased Type§

struct CharDeviceImpl {
     inner: UPIntrFreeCell<NS16550aInner>,
     condvar: Condvar,
-}

Fields§

§inner: UPIntrFreeCell<NS16550aInner>§condvar: Condvar

Implementations§

source§

impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR>

source

pub fn new() -> Self

source

pub fn read_buffer_is_empty(&self) -> bool

Trait Implementations§

source§

impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR>

source§

fn init(&self)

source§

fn read(&self) -> u8

source§

fn write(&self, ch: u8)

source§

fn handle_irq(&self)

\ No newline at end of file +}

Fields§

§inner: UPIntrFreeCell<NS16550aInner>§condvar: Condvar
\ No newline at end of file diff --git a/ch9/os/config/constant.KERNEL_HEAP_SIZE.html b/ch9/os/config/constant.KERNEL_HEAP_SIZE.html index 303c422ca..a48ed0d39 100644 --- a/ch9/os/config/constant.KERNEL_HEAP_SIZE.html +++ b/ch9/os/config/constant.KERNEL_HEAP_SIZE.html @@ -1 +1,2 @@ -KERNEL_HEAP_SIZE in os::config - Rust

Constant os::config::KERNEL_HEAP_SIZE

source ·
pub const KERNEL_HEAP_SIZE: usize = 0x100_0000;
\ No newline at end of file +KERNEL_HEAP_SIZE in os::config - Rust +

Constant os::config::KERNEL_HEAP_SIZE

source ·
pub const KERNEL_HEAP_SIZE: usize = 0x100_0000;
\ No newline at end of file diff --git a/ch9/os/config/constant.KERNEL_STACK_SIZE.html b/ch9/os/config/constant.KERNEL_STACK_SIZE.html index 7004104e8..74dbf040a 100644 --- a/ch9/os/config/constant.KERNEL_STACK_SIZE.html +++ b/ch9/os/config/constant.KERNEL_STACK_SIZE.html @@ -1 +1,2 @@ -KERNEL_STACK_SIZE in os::config - Rust

Constant os::config::KERNEL_STACK_SIZE

source ·
pub const KERNEL_STACK_SIZE: usize = _; // 8_192usize
\ No newline at end of file +KERNEL_STACK_SIZE in os::config - Rust +

Constant os::config::KERNEL_STACK_SIZE

source ·
pub const KERNEL_STACK_SIZE: usize = _; // 8_192usize
\ No newline at end of file diff --git a/ch9/os/config/constant.MEMORY_END.html b/ch9/os/config/constant.MEMORY_END.html index 872b994c8..cf0eb6490 100644 --- a/ch9/os/config/constant.MEMORY_END.html +++ b/ch9/os/config/constant.MEMORY_END.html @@ -1 +1,2 @@ -MEMORY_END in os::config - Rust

Constant os::config::MEMORY_END

source ·
pub const MEMORY_END: usize = 0x88000000;
\ No newline at end of file +MEMORY_END in os::config - Rust +

Constant os::config::MEMORY_END

source ·
pub const MEMORY_END: usize = 0x88000000;
\ No newline at end of file diff --git a/ch9/os/config/constant.PAGE_SIZE.html b/ch9/os/config/constant.PAGE_SIZE.html index 4cb04d138..c061c0724 100644 --- a/ch9/os/config/constant.PAGE_SIZE.html +++ b/ch9/os/config/constant.PAGE_SIZE.html @@ -1 +1,2 @@ -PAGE_SIZE in os::config - Rust

Constant os::config::PAGE_SIZE

source ·
pub const PAGE_SIZE: usize = 0x1000;
\ No newline at end of file +PAGE_SIZE in os::config - Rust +

Constant os::config::PAGE_SIZE

source ·
pub const PAGE_SIZE: usize = 0x1000;
\ No newline at end of file diff --git a/ch9/os/config/constant.PAGE_SIZE_BITS.html b/ch9/os/config/constant.PAGE_SIZE_BITS.html index b2ce3ee82..04d90148d 100644 --- a/ch9/os/config/constant.PAGE_SIZE_BITS.html +++ b/ch9/os/config/constant.PAGE_SIZE_BITS.html @@ -1 +1,2 @@ -PAGE_SIZE_BITS in os::config - Rust

Constant os::config::PAGE_SIZE_BITS

source ·
pub const PAGE_SIZE_BITS: usize = 0xc;
\ No newline at end of file +PAGE_SIZE_BITS in os::config - Rust +

Constant os::config::PAGE_SIZE_BITS

source ·
pub const PAGE_SIZE_BITS: usize = 0xc;
\ No newline at end of file diff --git a/ch9/os/config/constant.TRAMPOLINE.html b/ch9/os/config/constant.TRAMPOLINE.html index 06c1c03be..7b89a8796 100644 --- a/ch9/os/config/constant.TRAMPOLINE.html +++ b/ch9/os/config/constant.TRAMPOLINE.html @@ -1 +1,2 @@ -TRAMPOLINE in os::config - Rust

Constant os::config::TRAMPOLINE

source ·
pub const TRAMPOLINE: usize = _; // 18_446_744_073_709_547_520usize
\ No newline at end of file +TRAMPOLINE in os::config - Rust +

Constant os::config::TRAMPOLINE

source ·
pub const TRAMPOLINE: usize = _; // 18_446_744_073_709_547_520usize
\ No newline at end of file diff --git a/ch9/os/config/constant.TRAP_CONTEXT_BASE.html b/ch9/os/config/constant.TRAP_CONTEXT_BASE.html index a2ed5e043..6452e648e 100644 --- a/ch9/os/config/constant.TRAP_CONTEXT_BASE.html +++ b/ch9/os/config/constant.TRAP_CONTEXT_BASE.html @@ -1 +1,2 @@ -TRAP_CONTEXT_BASE in os::config - Rust

Constant os::config::TRAP_CONTEXT_BASE

source ·
pub const TRAP_CONTEXT_BASE: usize = _; // 18_446_744_073_709_543_424usize
\ No newline at end of file +TRAP_CONTEXT_BASE in os::config - Rust +

Constant os::config::TRAP_CONTEXT_BASE

source ·
pub const TRAP_CONTEXT_BASE: usize = _; // 18_446_744_073_709_543_424usize
\ No newline at end of file diff --git a/ch9/os/config/constant.USER_STACK_SIZE.html b/ch9/os/config/constant.USER_STACK_SIZE.html index 84596c77f..f94afaec1 100644 --- a/ch9/os/config/constant.USER_STACK_SIZE.html +++ b/ch9/os/config/constant.USER_STACK_SIZE.html @@ -1 +1,2 @@ -USER_STACK_SIZE in os::config - Rust

Constant os::config::USER_STACK_SIZE

source ·
pub const USER_STACK_SIZE: usize = _; // 8_192usize
\ No newline at end of file +USER_STACK_SIZE in os::config - Rust +

Constant os::config::USER_STACK_SIZE

source ·
pub const USER_STACK_SIZE: usize = _; // 8_192usize
\ No newline at end of file diff --git a/ch9/os/config/index.html b/ch9/os/config/index.html index 760fedb68..8a5a65b85 100644 --- a/ch9/os/config/index.html +++ b/ch9/os/config/index.html @@ -1 +1,2 @@ -os::config - Rust

Module os::config

source ·

Re-exports

Constants

\ No newline at end of file +os::config - Rust +

Module os::config

source ·

Re-exports

Constants

\ No newline at end of file diff --git a/ch9/os/console/fn.print.html b/ch9/os/console/fn.print.html index 536de6e63..00ed85117 100644 --- a/ch9/os/console/fn.print.html +++ b/ch9/os/console/fn.print.html @@ -1 +1,2 @@ -print in os::console - Rust

Function os::console::print

source ·
pub fn print(args: Arguments<'_>)
\ No newline at end of file +print in os::console - Rust +

Function os::console::print

source ·
pub fn print(args: Arguments<'_>)
\ No newline at end of file diff --git a/ch9/os/console/index.html b/ch9/os/console/index.html index d64443eb5..8a46ec44a 100644 --- a/ch9/os/console/index.html +++ b/ch9/os/console/index.html @@ -1 +1,2 @@ -os::console - Rust

Module os::console

source ·

Structs

Functions

\ No newline at end of file +os::console - Rust +

Module os::console

source ·

Structs

Functions

\ No newline at end of file diff --git a/ch9/os/console/struct.Stdout.html b/ch9/os/console/struct.Stdout.html index e5fe19239..cb5fe9ea3 100644 --- a/ch9/os/console/struct.Stdout.html +++ b/ch9/os/console/struct.Stdout.html @@ -1,24 +1,25 @@ -Stdout in os::console - Rust

Struct os::console::Stdout

source ·
struct Stdout;

Trait Implementations§

source§

impl Write for Stdout

source§

fn write_str(&mut self, s: &str) -> Result

Writes a string slice into this writer, returning whether the write -succeeded. Read more
1.1.0 · source§

fn write_char(&mut self, c: char) -> Result<(), Error>

Writes a char into this writer, returning whether the write succeeded. Read more
1.0.0 · source§

fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

Glue for usage of the write! macro with implementors of this trait. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+Stdout in os::console - Rust +

Struct os::console::Stdout

source ·
struct Stdout;

Trait Implementations§

source§

impl Write for Stdout

source§

fn write_str(&mut self, s: &str) -> Result

Writes a string slice into this writer, returning whether the write +succeeded. Read more
1.1.0 · source§

fn write_char(&mut self, c: char) -> Result<(), Error>

Writes a char into this writer, returning whether the write succeeded. Read more
1.0.0 · source§

fn write_fmt(&mut self, args: Arguments<'_>) -> Result<(), Error>

Glue for usage of the write! macro with implementors of this trait. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/block/fn.block_device_test.html b/ch9/os/drivers/block/fn.block_device_test.html index a7c8eeebd..4dd4472db 100644 --- a/ch9/os/drivers/block/fn.block_device_test.html +++ b/ch9/os/drivers/block/fn.block_device_test.html @@ -1 +1,2 @@ -block_device_test in os::drivers::block - Rust
pub fn block_device_test()
\ No newline at end of file +block_device_test in os::drivers::block - Rust +
pub fn block_device_test()
\ No newline at end of file diff --git a/ch9/os/drivers/block/index.html b/ch9/os/drivers/block/index.html index e0dfea44e..785f16339 100644 --- a/ch9/os/drivers/block/index.html +++ b/ch9/os/drivers/block/index.html @@ -1 +1,2 @@ -os::drivers::block - Rust

Module os::drivers::block

source ·

Re-exports

Modules

Structs

Functions

\ No newline at end of file +os::drivers::block - Rust +

Module os::drivers::block

source ·

Re-exports

Modules

Structs

Functions

\ No newline at end of file diff --git a/ch9/os/drivers/block/struct.BLOCK_DEVICE.html b/ch9/os/drivers/block/struct.BLOCK_DEVICE.html index dc8e4ab96..dd51b3992 100644 --- a/ch9/os/drivers/block/struct.BLOCK_DEVICE.html +++ b/ch9/os/drivers/block/struct.BLOCK_DEVICE.html @@ -1,25 +1,26 @@ -BLOCK_DEVICE in os::drivers::block - Rust

Struct os::drivers::block::BLOCK_DEVICE

source ·
pub struct BLOCK_DEVICE {
+BLOCK_DEVICE in os::drivers::block - Rust
+    

Struct os::drivers::block::BLOCK_DEVICE

source ·
pub struct BLOCK_DEVICE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for BLOCK_DEVICE

§

type Target = Arc<dyn BlockDevice, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn BlockDevice>

Dereferences the value.
source§

impl LazyStatic for BLOCK_DEVICE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for BLOCK_DEVICE

§

type Target = Arc<dyn BlockDevice>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn BlockDevice>

Dereferences the value.
source§

impl LazyStatic for BLOCK_DEVICE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/block/virtio_blk/constant.VIRTIO0.html b/ch9/os/drivers/block/virtio_blk/constant.VIRTIO0.html index 63bafc7cb..da7571b38 100644 --- a/ch9/os/drivers/block/virtio_blk/constant.VIRTIO0.html +++ b/ch9/os/drivers/block/virtio_blk/constant.VIRTIO0.html @@ -1 +1,2 @@ -VIRTIO0 in os::drivers::block::virtio_blk - Rust

Constant os::drivers::block::virtio_blk::VIRTIO0

source ·
const VIRTIO0: usize = 0x10008000;
\ No newline at end of file +VIRTIO0 in os::drivers::block::virtio_blk - Rust +

Constant os::drivers::block::virtio_blk::VIRTIO0

source ·
const VIRTIO0: usize = 0x10008000;
\ No newline at end of file diff --git a/ch9/os/drivers/block/virtio_blk/index.html b/ch9/os/drivers/block/virtio_blk/index.html index 52460f2cd..159cb61d3 100644 --- a/ch9/os/drivers/block/virtio_blk/index.html +++ b/ch9/os/drivers/block/virtio_blk/index.html @@ -1 +1,2 @@ -os::drivers::block::virtio_blk - Rust
\ No newline at end of file +os::drivers::block::virtio_blk - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html b/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html index 8c839f6a3..f8824c5ae 100644 --- a/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html +++ b/ch9/os/drivers/block/virtio_blk/struct.VirtIOBlock.html @@ -1,26 +1,27 @@ -VirtIOBlock in os::drivers::block::virtio_blk - Rust
pub struct VirtIOBlock {
+VirtIOBlock in os::drivers::block::virtio_blk - Rust
+    
pub struct VirtIOBlock {
     virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>,
     condvars: BTreeMap<u16, Condvar>,
-}

Fields§

§virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>§condvars: BTreeMap<u16, Condvar>

Implementations§

source§

impl VirtIOBlock

source

pub fn new() -> Self

Trait Implementations§

source§

impl BlockDevice for VirtIOBlock

source§

fn read_block(&self, block_id: usize, buf: &mut [u8])

source§

fn write_block(&self, block_id: usize, buf: &[u8])

source§

fn handle_irq(&self)

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>§condvars: BTreeMap<u16, Condvar>

Implementations§

source§

impl VirtIOBlock

source

pub fn new() -> Self

Trait Implementations§

source§

impl BlockDevice for VirtIOBlock

source§

fn read_block(&self, block_id: usize, buf: &mut [u8])

source§

fn write_block(&self, block_id: usize, buf: &[u8])

source§

fn handle_irq(&self)

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/bus/index.html b/ch9/os/drivers/bus/index.html index ac4cd28a3..5f92f899a 100644 --- a/ch9/os/drivers/bus/index.html +++ b/ch9/os/drivers/bus/index.html @@ -1 +1,2 @@ -os::drivers::bus - Rust
\ No newline at end of file +os::drivers::bus - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/bus/virtio/index.html b/ch9/os/drivers/bus/virtio/index.html index da96402d8..8af3e1378 100644 --- a/ch9/os/drivers/bus/virtio/index.html +++ b/ch9/os/drivers/bus/virtio/index.html @@ -1 +1,2 @@ -os::drivers::bus::virtio - Rust
\ No newline at end of file +os::drivers::bus::virtio - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/bus/virtio/struct.QUEUE_FRAMES.html b/ch9/os/drivers/bus/virtio/struct.QUEUE_FRAMES.html index 577cc39b7..daf238457 100644 --- a/ch9/os/drivers/bus/virtio/struct.QUEUE_FRAMES.html +++ b/ch9/os/drivers/bus/virtio/struct.QUEUE_FRAMES.html @@ -1,27 +1,28 @@ -QUEUE_FRAMES in os::drivers::bus::virtio - Rust

Struct os::drivers::bus::virtio::QUEUE_FRAMES

source ·
struct QUEUE_FRAMES {
+QUEUE_FRAMES in os::drivers::bus::virtio - Rust
+    

Struct os::drivers::bus::virtio::QUEUE_FRAMES

source ·
struct QUEUE_FRAMES {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<FrameTracker>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for QUEUE_FRAMES

§

type Target = UPIntrFreeCell<Vec<FrameTracker, Global>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Vec<FrameTracker>>

Dereferences the value.
source§

impl LazyStatic for QUEUE_FRAMES

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<FrameTracker>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for QUEUE_FRAMES

§

type Target = UPIntrFreeCell<Vec<FrameTracker>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Vec<FrameTracker>>

Dereferences the value.
source§

impl LazyStatic for QUEUE_FRAMES

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/bus/virtio/struct.VirtioHal.html b/ch9/os/drivers/bus/virtio/struct.VirtioHal.html index e687683c7..a84658fb9 100644 --- a/ch9/os/drivers/bus/virtio/struct.VirtioHal.html +++ b/ch9/os/drivers/bus/virtio/struct.VirtioHal.html @@ -1,25 +1,26 @@ -VirtioHal in os::drivers::bus::virtio - Rust

Struct os::drivers::bus::virtio::VirtioHal

source ·
pub struct VirtioHal;

Trait Implementations§

source§

impl Hal for VirtioHal

source§

fn dma_alloc(pages: usize) -> usize

Allocates the given number of contiguous physical pages of DMA memory for virtio use.
source§

fn dma_dealloc(pa: usize, pages: usize) -> i32

Deallocates the given contiguous physical DMA memory pages.
source§

fn phys_to_virt(addr: usize) -> usize

Converts a physical address used for virtio to a virtual address which the program can +VirtioHal in os::drivers::bus::virtio - Rust +

Struct os::drivers::bus::virtio::VirtioHal

source ·
pub struct VirtioHal;

Trait Implementations§

source§

impl Hal for VirtioHal

source§

fn dma_alloc(pages: usize) -> usize

Allocates the given number of contiguous physical pages of DMA memory for virtio use.
source§

fn dma_dealloc(pa: usize, pages: usize) -> i32

Deallocates the given contiguous physical DMA memory pages.
source§

fn phys_to_virt(addr: usize) -> usize

Converts a physical address used for virtio to a virtual address which the program can access.
source§

fn virt_to_phys(vaddr: usize) -> usize

Converts a virtual address which the program can access to the corresponding physical -address to use for virtio.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+address to use for virtio.

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/index.html b/ch9/os/drivers/chardev/index.html index d04c9c1ba..5b455dad2 100644 --- a/ch9/os/drivers/chardev/index.html +++ b/ch9/os/drivers/chardev/index.html @@ -1 +1,2 @@ -os::drivers::chardev - Rust
\ No newline at end of file +os::drivers::chardev - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/index.html b/ch9/os/drivers/chardev/ns16550a/index.html index 050a3e63f..774121c6b 100644 --- a/ch9/os/drivers/chardev/ns16550a/index.html +++ b/ch9/os/drivers/chardev/ns16550a/index.html @@ -1 +1,2 @@ -os::drivers::chardev::ns16550a - Rust

Module os::drivers::chardev::ns16550a

source ·

Structs

\ No newline at end of file +os::drivers::chardev::ns16550a - Rust +

Module os::drivers::chardev::ns16550a

source ·

Structs

\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.IER.html b/ch9/os/drivers/chardev/ns16550a/struct.IER.html index 7001b743c..24db1bd17 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.IER.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.IER.html @@ -1,7 +1,8 @@ -IER in os::drivers::chardev::ns16550a - Rust

Struct os::drivers::chardev::ns16550a::IER

source ·
pub struct IER {
+IER in os::drivers::chardev::ns16550a - Rust
+    

Struct os::drivers::chardev::ns16550a::IER

source ·
pub struct IER {
     bits: u8,
 }
Expand description

InterruptEnableRegister

-

Fields§

§bits: u8

Implementations§

source§

impl IER

source

pub const RX_AVAILABLE: Self = _

source

pub const TX_EMPTY: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

+

Fields§

§bits: u8

Implementations§

source§

impl IER

source

pub const RX_AVAILABLE: Self = _

source

pub const TX_EMPTY: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u8

Returns the raw value of the flags currently stored.

source

pub const fn from_bits(bits: u8) -> Option<Self>

Convert from underlying bit representation, unless that @@ -59,45 +60,45 @@

Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

Trait Implementations§

source§

impl Binary for IER

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<IER> for IER

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = IER

The resulting type after applying the & operator.
source§

impl BitAndAssign<IER> for IER

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

-
source§

impl BitOr<IER> for IER

source§

fn bitor(self, other: IER) -> Self

Returns the union of the two sets of flags.

-
§

type Output = IER

The resulting type after applying the | operator.
source§

impl BitOrAssign<IER> for IER

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

-
source§

impl BitXor<IER> for IER

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = IER

The resulting type after applying the ^ operator.
source§

impl BitXorAssign<IER> for IER

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for IER

source§

fn clone(&self) -> IER

Returns a copy 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 IER

source§

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

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

impl Extend<IER> for IER

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<IER> for IER

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for IER

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Binary for IER

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for IER

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = IER

The resulting type after applying the & operator.
source§

impl BitAndAssign for IER

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl BitOr for IER

source§

fn bitor(self, other: IER) -> Self

Returns the union of the two sets of flags.

+
§

type Output = IER

The resulting type after applying the | operator.
source§

impl BitOrAssign for IER

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
source§

impl BitXor for IER

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

+
§

type Output = IER

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for IER

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for IER

source§

fn clone(&self) -> IER

Returns a copy 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 IER

source§

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

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

impl Extend<IER> for IER

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<IER> for IER

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for IER

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for IER

source§

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

Formats the value using the given formatter.
source§

impl Not for IER

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = IER

The resulting type after applying the ! operator.
source§

impl Octal for IER

source§

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

Formats the value using the given formatter.
source§

impl Ord for IER

source§

fn cmp(&self, other: &IER) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<IER> for IER

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<IER> for IER

source§

fn partial_cmp(&self, other: &IER) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Sub<IER> for IER

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = IER

The resulting type after applying the - operator.
source§

impl SubAssign<IER> for IER

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for IER

source§

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

Formats the value using the given formatter.
source§

impl Copy for IER

source§

impl Eq for IER

source§

impl StructuralEq for IER

source§

impl StructuralPartialEq for IER

Auto Trait Implementations§

§

impl RefUnwindSafe for IER

§

impl Send for IER

§

impl Sync for IER

§

impl Unpin for IER

§

impl UnwindSafe for IER

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for IER

source§

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

Formats the value using the given formatter.
source§

impl Not for IER

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = IER

The resulting type after applying the ! operator.
source§

impl Octal for IER

source§

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

Formats the value using the given formatter.
source§

impl Ord for IER

source§

fn cmp(&self, other: &IER) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for IER

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for IER

source§

fn partial_cmp(&self, other: &IER) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Sub for IER

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

+
§

type Output = IER

The resulting type after applying the - operator.
source§

impl SubAssign for IER

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for IER

source§

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

Formats the value using the given formatter.
source§

impl Copy for IER

source§

impl Eq for IER

source§

impl StructuralEq for IER

source§

impl StructuralPartialEq for IER

Auto Trait Implementations§

§

impl RefUnwindSafe for IER

§

impl Send for IER

§

impl Sync for IER

§

impl Unpin for IER

§

impl UnwindSafe for IER

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.LSR.html b/ch9/os/drivers/chardev/ns16550a/struct.LSR.html index f4996d0ed..42aaa4d4c 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.LSR.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.LSR.html @@ -1,7 +1,8 @@ -LSR in os::drivers::chardev::ns16550a - Rust

Struct os::drivers::chardev::ns16550a::LSR

source ·
pub struct LSR {
+LSR in os::drivers::chardev::ns16550a - Rust
+    

Struct os::drivers::chardev::ns16550a::LSR

source ·
pub struct LSR {
     bits: u8,
 }
Expand description

LineStatusRegister

-

Fields§

§bits: u8

Implementations§

source§

impl LSR

source

pub const DATA_AVAILABLE: Self = _

source

pub const THR_EMPTY: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

+

Fields§

§bits: u8

Implementations§

source§

impl LSR

source

pub const DATA_AVAILABLE: Self = _

source

pub const THR_EMPTY: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u8

Returns the raw value of the flags currently stored.

source

pub const fn from_bits(bits: u8) -> Option<Self>

Convert from underlying bit representation, unless that @@ -59,45 +60,45 @@

Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

Trait Implementations§

source§

impl Binary for LSR

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<LSR> for LSR

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = LSR

The resulting type after applying the & operator.
source§

impl BitAndAssign<LSR> for LSR

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

-
source§

impl BitOr<LSR> for LSR

source§

fn bitor(self, other: LSR) -> Self

Returns the union of the two sets of flags.

-
§

type Output = LSR

The resulting type after applying the | operator.
source§

impl BitOrAssign<LSR> for LSR

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

-
source§

impl BitXor<LSR> for LSR

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = LSR

The resulting type after applying the ^ operator.
source§

impl BitXorAssign<LSR> for LSR

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for LSR

source§

fn clone(&self) -> LSR

Returns a copy 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 LSR

source§

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

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

impl Extend<LSR> for LSR

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<LSR> for LSR

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for LSR

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Binary for LSR

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for LSR

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = LSR

The resulting type after applying the & operator.
source§

impl BitAndAssign for LSR

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl BitOr for LSR

source§

fn bitor(self, other: LSR) -> Self

Returns the union of the two sets of flags.

+
§

type Output = LSR

The resulting type after applying the | operator.
source§

impl BitOrAssign for LSR

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
source§

impl BitXor for LSR

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

+
§

type Output = LSR

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for LSR

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for LSR

source§

fn clone(&self) -> LSR

Returns a copy 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 LSR

source§

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

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

impl Extend<LSR> for LSR

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<LSR> for LSR

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for LSR

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for LSR

source§

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

Formats the value using the given formatter.
source§

impl Not for LSR

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = LSR

The resulting type after applying the ! operator.
source§

impl Octal for LSR

source§

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

Formats the value using the given formatter.
source§

impl Ord for LSR

source§

fn cmp(&self, other: &LSR) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<LSR> for LSR

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<LSR> for LSR

source§

fn partial_cmp(&self, other: &LSR) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Sub<LSR> for LSR

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = LSR

The resulting type after applying the - operator.
source§

impl SubAssign<LSR> for LSR

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for LSR

source§

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

Formats the value using the given formatter.
source§

impl Copy for LSR

source§

impl Eq for LSR

source§

impl StructuralEq for LSR

source§

impl StructuralPartialEq for LSR

Auto Trait Implementations§

§

impl RefUnwindSafe for LSR

§

impl Send for LSR

§

impl Sync for LSR

§

impl Unpin for LSR

§

impl UnwindSafe for LSR

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for LSR

source§

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

Formats the value using the given formatter.
source§

impl Not for LSR

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = LSR

The resulting type after applying the ! operator.
source§

impl Octal for LSR

source§

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

Formats the value using the given formatter.
source§

impl Ord for LSR

source§

fn cmp(&self, other: &LSR) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for LSR

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for LSR

source§

fn partial_cmp(&self, other: &LSR) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Sub for LSR

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

+
§

type Output = LSR

The resulting type after applying the - operator.
source§

impl SubAssign for LSR

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for LSR

source§

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

Formats the value using the given formatter.
source§

impl Copy for LSR

source§

impl Eq for LSR

source§

impl StructuralEq for LSR

source§

impl StructuralPartialEq for LSR

Auto Trait Implementations§

§

impl RefUnwindSafe for LSR

§

impl Send for LSR

§

impl Sync for LSR

§

impl Unpin for LSR

§

impl UnwindSafe for LSR

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.MCR.html b/ch9/os/drivers/chardev/ns16550a/struct.MCR.html index 3e7f69b64..9fda47f9d 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.MCR.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.MCR.html @@ -1,7 +1,8 @@ -MCR in os::drivers::chardev::ns16550a - Rust

Struct os::drivers::chardev::ns16550a::MCR

source ·
pub struct MCR {
+MCR in os::drivers::chardev::ns16550a - Rust
+    

Struct os::drivers::chardev::ns16550a::MCR

source ·
pub struct MCR {
     bits: u8,
 }
Expand description

Model Control Register

-

Fields§

§bits: u8

Implementations§

source§

impl MCR

source

pub const DATA_TERMINAL_READY: Self = _

source

pub const REQUEST_TO_SEND: Self = _

source

pub const AUX_OUTPUT1: Self = _

source

pub const AUX_OUTPUT2: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

+

Fields§

§bits: u8

Implementations§

source§

impl MCR

source

pub const DATA_TERMINAL_READY: Self = _

source

pub const REQUEST_TO_SEND: Self = _

source

pub const AUX_OUTPUT1: Self = _

source

pub const AUX_OUTPUT2: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u8

Returns the raw value of the flags currently stored.

source

pub const fn from_bits(bits: u8) -> Option<Self>

Convert from underlying bit representation, unless that @@ -59,45 +60,45 @@

Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

Trait Implementations§

source§

impl Binary for MCR

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<MCR> for MCR

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MCR

The resulting type after applying the & operator.
source§

impl BitAndAssign<MCR> for MCR

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

-
source§

impl BitOr<MCR> for MCR

source§

fn bitor(self, other: MCR) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MCR

The resulting type after applying the | operator.
source§

impl BitOrAssign<MCR> for MCR

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

-
source§

impl BitXor<MCR> for MCR

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MCR

The resulting type after applying the ^ operator.
source§

impl BitXorAssign<MCR> for MCR

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MCR

source§

fn clone(&self) -> MCR

Returns a copy 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 MCR

source§

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

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

impl Extend<MCR> for MCR

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MCR> for MCR

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MCR

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Binary for MCR

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for MCR

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MCR

The resulting type after applying the & operator.
source§

impl BitAndAssign for MCR

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl BitOr for MCR

source§

fn bitor(self, other: MCR) -> Self

Returns the union of the two sets of flags.

+
§

type Output = MCR

The resulting type after applying the | operator.
source§

impl BitOrAssign for MCR

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
source§

impl BitXor for MCR

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

+
§

type Output = MCR

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MCR

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MCR

source§

fn clone(&self) -> MCR

Returns a copy 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 MCR

source§

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

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

impl Extend<MCR> for MCR

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MCR> for MCR

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MCR

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MCR

source§

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

Formats the value using the given formatter.
source§

impl Not for MCR

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MCR

The resulting type after applying the ! operator.
source§

impl Octal for MCR

source§

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

Formats the value using the given formatter.
source§

impl Ord for MCR

source§

fn cmp(&self, other: &MCR) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<MCR> for MCR

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<MCR> for MCR

source§

fn partial_cmp(&self, other: &MCR) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Sub<MCR> for MCR

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MCR

The resulting type after applying the - operator.
source§

impl SubAssign<MCR> for MCR

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MCR

source§

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

Formats the value using the given formatter.
source§

impl Copy for MCR

source§

impl Eq for MCR

source§

impl StructuralEq for MCR

source§

impl StructuralPartialEq for MCR

Auto Trait Implementations§

§

impl RefUnwindSafe for MCR

§

impl Send for MCR

§

impl Sync for MCR

§

impl Unpin for MCR

§

impl UnwindSafe for MCR

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MCR

source§

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

Formats the value using the given formatter.
source§

impl Not for MCR

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MCR

The resulting type after applying the ! operator.
source§

impl Octal for MCR

source§

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

Formats the value using the given formatter.
source§

impl Ord for MCR

source§

fn cmp(&self, other: &MCR) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MCR

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for MCR

source§

fn partial_cmp(&self, other: &MCR) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Sub for MCR

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

+
§

type Output = MCR

The resulting type after applying the - operator.
source§

impl SubAssign for MCR

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MCR

source§

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

Formats the value using the given formatter.
source§

impl Copy for MCR

source§

impl Eq for MCR

source§

impl StructuralEq for MCR

source§

impl StructuralPartialEq for MCR

Auto Trait Implementations§

§

impl RefUnwindSafe for MCR

§

impl Send for MCR

§

impl Sync for MCR

§

impl Unpin for MCR

§

impl UnwindSafe for MCR

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html b/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html index 7fbfc3c34..4c4ef56ba 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.NS16550a.html @@ -1,26 +1,27 @@ -NS16550a in os::drivers::chardev::ns16550a - Rust
pub struct NS16550a<const BASE_ADDR: usize> {
+NS16550a in os::drivers::chardev::ns16550a - Rust
+    
pub struct NS16550a<const BASE_ADDR: usize> {
     inner: UPIntrFreeCell<NS16550aInner>,
     condvar: Condvar,
-}

Fields§

§inner: UPIntrFreeCell<NS16550aInner>§condvar: Condvar

Implementations§

source§

impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR>

source

pub fn new() -> Self

source

pub fn read_buffer_is_empty(&self) -> bool

Trait Implementations§

source§

impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR>

source§

fn init(&self)

source§

fn read(&self) -> u8

source§

fn write(&self, ch: u8)

source§

fn handle_irq(&self)

Auto Trait Implementations§

§

impl<const BASE_ADDR: usize> !RefUnwindSafe for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> Send for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> Sync for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> Unpin for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> !UnwindSafe for NS16550a<BASE_ADDR>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§inner: UPIntrFreeCell<NS16550aInner>§condvar: Condvar

Implementations§

source§

impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR>

source

pub fn new() -> Self

source

pub fn read_buffer_is_empty(&self) -> bool

Trait Implementations§

source§

impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR>

source§

fn init(&self)

source§

fn read(&self) -> u8

source§

fn write(&self, ch: u8)

source§

fn handle_irq(&self)

Auto Trait Implementations§

§

impl<const BASE_ADDR: usize> !RefUnwindSafe for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> Send for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> Sync for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> Unpin for NS16550a<BASE_ADDR>

§

impl<const BASE_ADDR: usize> !UnwindSafe for NS16550a<BASE_ADDR>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html index b78396827..02d762450 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aInner.html @@ -1,26 +1,27 @@ -NS16550aInner in os::drivers::chardev::ns16550a - Rust
struct NS16550aInner {
+NS16550aInner in os::drivers::chardev::ns16550a - Rust
+    
struct NS16550aInner {
     ns16550a: NS16550aRaw,
     read_buffer: VecDeque<u8>,
-}

Fields§

§ns16550a: NS16550aRaw§read_buffer: VecDeque<u8>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§ns16550a: NS16550aRaw§read_buffer: VecDeque<u8>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html index e23070d77..35c465c05 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.NS16550aRaw.html @@ -1,25 +1,26 @@ -NS16550aRaw in os::drivers::chardev::ns16550a - Rust
pub struct NS16550aRaw {
+NS16550aRaw in os::drivers::chardev::ns16550a - Rust
+    
pub struct NS16550aRaw {
     base_addr: usize,
-}

Fields§

§base_addr: usize

Implementations§

source§

impl NS16550aRaw

source

fn read_end(&mut self) -> &mut ReadWithoutDLAB

source

fn write_end(&mut self) -> &mut WriteWithoutDLAB

source

pub fn new(base_addr: usize) -> Self

source

pub fn init(&mut self)

source

pub fn read(&mut self) -> Option<u8>

source

pub fn write(&mut self, ch: u8)

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§base_addr: usize

Implementations§

source§

impl NS16550aRaw

source

fn read_end(&mut self) -> &mut ReadWithoutDLAB

source

fn write_end(&mut self) -> &mut WriteWithoutDLAB

source

pub fn new(base_addr: usize) -> Self

source

pub fn init(&mut self)

source

pub fn read(&mut self) -> Option<u8>

source

pub fn write(&mut self, ch: u8)

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html b/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html index cf84dabf5..29165bf12 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.ReadWithoutDLAB.html @@ -1,4 +1,5 @@ -ReadWithoutDLAB in os::drivers::chardev::ns16550a - Rust
#[repr(C)]
struct ReadWithoutDLAB { +ReadWithoutDLAB in os::drivers::chardev::ns16550a - Rust +
#[repr(C)]
struct ReadWithoutDLAB { pub rbr: ReadOnly<u8>, pub ier: Volatile<IER>, pub iir: ReadOnly<u8>, @@ -7,34 +8,34 @@ pub lsr: ReadOnly<LSR>, _padding1: ReadOnly<u8>, _padding2: ReadOnly<u8>, -}

Fields§

§rbr: ReadOnly<u8>

receiver buffer register

-
§ier: Volatile<IER>

interrupt enable register

-
§iir: ReadOnly<u8>

interrupt identification register

-
§lcr: Volatile<u8>

line control register

-
§mcr: Volatile<MCR>

model control register

-
§lsr: ReadOnly<LSR>

line status register

-
§_padding1: ReadOnly<u8>

ignore MSR

-
§_padding2: ReadOnly<u8>

ignore SCR

-

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§rbr: ReadOnly<u8>

receiver buffer register

+
§ier: Volatile<IER>

interrupt enable register

+
§iir: ReadOnly<u8>

interrupt identification register

+
§lcr: Volatile<u8>

line control register

+
§mcr: Volatile<MCR>

model control register

+
§lsr: ReadOnly<LSR>

line status register

+
§_padding1: ReadOnly<u8>

ignore MSR

+
§_padding2: ReadOnly<u8>

ignore SCR

+

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html b/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html index d62dc6008..7ff886c86 100644 --- a/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html +++ b/ch9/os/drivers/chardev/ns16550a/struct.WriteWithoutDLAB.html @@ -1,4 +1,5 @@ -WriteWithoutDLAB in os::drivers::chardev::ns16550a - Rust
#[repr(C)]
struct WriteWithoutDLAB { +WriteWithoutDLAB in os::drivers::chardev::ns16550a - Rust +
#[repr(C)]
struct WriteWithoutDLAB { pub thr: WriteOnly<u8>, pub ier: Volatile<IER>, _padding0: ReadOnly<u8>, @@ -6,33 +7,33 @@ pub mcr: Volatile<MCR>, pub lsr: ReadOnly<LSR>, _padding1: ReadOnly<u16>, -}

Fields§

§thr: WriteOnly<u8>

transmitter holding register

-
§ier: Volatile<IER>

interrupt enable register

-
§_padding0: ReadOnly<u8>

ignore FCR

-
§lcr: Volatile<u8>

line control register

-
§mcr: Volatile<MCR>

modem control register

-
§lsr: ReadOnly<LSR>

line status register

-
§_padding1: ReadOnly<u16>

ignore other registers

-

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§thr: WriteOnly<u8>

transmitter holding register

+
§ier: Volatile<IER>

interrupt enable register

+
§_padding0: ReadOnly<u8>

ignore FCR

+
§lcr: Volatile<u8>

line control register

+
§mcr: Volatile<MCR>

modem control register

+
§lsr: ReadOnly<LSR>

line status register

+
§_padding1: ReadOnly<u16>

ignore other registers

+

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/struct.UART.html b/ch9/os/drivers/chardev/struct.UART.html index a7b0100d9..775e7b6ce 100644 --- a/ch9/os/drivers/chardev/struct.UART.html +++ b/ch9/os/drivers/chardev/struct.UART.html @@ -1,25 +1,26 @@ -UART in os::drivers::chardev - Rust

Struct os::drivers::chardev::UART

source ·
pub struct UART {
+UART in os::drivers::chardev - Rust
+    

Struct os::drivers::chardev::UART

source ·
pub struct UART {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for UART

§

type Target = Arc<NS16550a<VIRT_UART>, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<NS16550a<VIRT_UART>>

Dereferences the value.
source§

impl LazyStatic for UART

Auto Trait Implementations§

§

impl RefUnwindSafe for UART

§

impl Send for UART

§

impl Sync for UART

§

impl Unpin for UART

§

impl UnwindSafe for UART

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for UART

§

type Target = Arc<NS16550a<VIRT_UART>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<NS16550a<VIRT_UART>>

Dereferences the value.
source§

impl LazyStatic for UART

Auto Trait Implementations§

§

impl RefUnwindSafe for UART

§

impl Send for UART

§

impl Sync for UART

§

impl Unpin for UART

§

impl UnwindSafe for UART

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/chardev/trait.CharDevice.html b/ch9/os/drivers/chardev/trait.CharDevice.html index 0b29f7c7b..c4dfae43c 100644 --- a/ch9/os/drivers/chardev/trait.CharDevice.html +++ b/ch9/os/drivers/chardev/trait.CharDevice.html @@ -1,7 +1,8 @@ -CharDevice in os::drivers::chardev - Rust
pub trait CharDevice {
+CharDevice in os::drivers::chardev - Rust
+    
pub trait CharDevice {
     // Required methods
     fn init(&self);
     fn read(&self) -> u8;
     fn write(&self, ch: u8);
     fn handle_irq(&self);
-}

Required Methods§

source

fn init(&self)

source

fn read(&self) -> u8

source

fn write(&self, ch: u8)

source

fn handle_irq(&self)

Implementors§

source§

impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR>

\ No newline at end of file +}

Required Methods§

source

fn init(&self)

source

fn read(&self) -> u8

source

fn write(&self, ch: u8)

source

fn handle_irq(&self)

Implementors§

source§

impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR>

\ No newline at end of file diff --git a/ch9/os/drivers/gpu/constant.VIRTIO7.html b/ch9/os/drivers/gpu/constant.VIRTIO7.html index dff2af047..bf7324946 100644 --- a/ch9/os/drivers/gpu/constant.VIRTIO7.html +++ b/ch9/os/drivers/gpu/constant.VIRTIO7.html @@ -1 +1,2 @@ -VIRTIO7 in os::drivers::gpu - Rust

Constant os::drivers::gpu::VIRTIO7

source ·
const VIRTIO7: usize = 0x10007000;
\ No newline at end of file +VIRTIO7 in os::drivers::gpu - Rust +

Constant os::drivers::gpu::VIRTIO7

source ·
const VIRTIO7: usize = 0x10007000;
\ No newline at end of file diff --git a/ch9/os/drivers/gpu/index.html b/ch9/os/drivers/gpu/index.html index 2cff0ad5b..5646c67d6 100644 --- a/ch9/os/drivers/gpu/index.html +++ b/ch9/os/drivers/gpu/index.html @@ -1 +1,2 @@ -os::drivers::gpu - Rust
\ No newline at end of file +os::drivers::gpu - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/gpu/static.BMP_DATA.html b/ch9/os/drivers/gpu/static.BMP_DATA.html index a4e51c8da..c99b4e1ad 100644 --- a/ch9/os/drivers/gpu/static.BMP_DATA.html +++ b/ch9/os/drivers/gpu/static.BMP_DATA.html @@ -1 +1,2 @@ -BMP_DATA in os::drivers::gpu - Rust

Static os::drivers::gpu::BMP_DATA

source ·
static BMP_DATA: &[u8]
\ No newline at end of file +BMP_DATA in os::drivers::gpu - Rust +

Static os::drivers::gpu::BMP_DATA

source ·
static BMP_DATA: &[u8]
\ No newline at end of file diff --git a/ch9/os/drivers/gpu/struct.GPU_DEVICE.html b/ch9/os/drivers/gpu/struct.GPU_DEVICE.html index 1f419f90f..bd9d5cf3b 100644 --- a/ch9/os/drivers/gpu/struct.GPU_DEVICE.html +++ b/ch9/os/drivers/gpu/struct.GPU_DEVICE.html @@ -1,25 +1,26 @@ -GPU_DEVICE in os::drivers::gpu - Rust

Struct os::drivers::gpu::GPU_DEVICE

source ·
pub struct GPU_DEVICE {
+GPU_DEVICE in os::drivers::gpu - Rust
+    

Struct os::drivers::gpu::GPU_DEVICE

source ·
pub struct GPU_DEVICE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for GPU_DEVICE

§

type Target = Arc<dyn GpuDevice, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn GpuDevice>

Dereferences the value.
source§

impl LazyStatic for GPU_DEVICE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for GPU_DEVICE

§

type Target = Arc<dyn GpuDevice>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn GpuDevice>

Dereferences the value.
source§

impl LazyStatic for GPU_DEVICE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/gpu/struct.VirtIOGpuWrapper.html b/ch9/os/drivers/gpu/struct.VirtIOGpuWrapper.html index 7cda6af22..67d309918 100644 --- a/ch9/os/drivers/gpu/struct.VirtIOGpuWrapper.html +++ b/ch9/os/drivers/gpu/struct.VirtIOGpuWrapper.html @@ -1,26 +1,27 @@ -VirtIOGpuWrapper in os::drivers::gpu - Rust
pub struct VirtIOGpuWrapper {
+VirtIOGpuWrapper in os::drivers::gpu - Rust
+    
pub struct VirtIOGpuWrapper {
     gpu: UPIntrFreeCell<VirtIOGpu<'static, VirtioHal>>,
     fb: &'static [u8],
-}

Fields§

§gpu: UPIntrFreeCell<VirtIOGpu<'static, VirtioHal>>§fb: &'static [u8]

Implementations§

source§

impl VirtIOGpuWrapper

source

pub fn new() -> Self

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§gpu: UPIntrFreeCell<VirtIOGpu<'static, VirtioHal>>§fb: &'static [u8]

Implementations§

source§

impl VirtIOGpuWrapper

source

pub fn new() -> Self

Trait Implementations§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/gpu/trait.GpuDevice.html b/ch9/os/drivers/gpu/trait.GpuDevice.html index 596a9e227..90996a86f 100644 --- a/ch9/os/drivers/gpu/trait.GpuDevice.html +++ b/ch9/os/drivers/gpu/trait.GpuDevice.html @@ -1,6 +1,7 @@ -GpuDevice in os::drivers::gpu - Rust

Trait os::drivers::gpu::GpuDevice

source ·
pub trait GpuDevice: Send + Sync + Any {
+GpuDevice in os::drivers::gpu - Rust
+    

Trait os::drivers::gpu::GpuDevice

source ·
pub trait GpuDevice: Send + Sync + Any {
     // Required methods
     fn update_cursor(&self);
     fn get_framebuffer(&self) -> &mut [u8];
     fn flush(&self);
-}

Required Methods§

source

fn update_cursor(&self)

source

fn get_framebuffer(&self) -> &mut [u8]

source

fn flush(&self)

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn update_cursor(&self)

source

fn get_framebuffer(&self) -> &mut [u8]

source

fn flush(&self)

Implementors§

\ No newline at end of file diff --git a/ch9/os/drivers/index.html b/ch9/os/drivers/index.html index 970829d10..2825ba107 100644 --- a/ch9/os/drivers/index.html +++ b/ch9/os/drivers/index.html @@ -1 +1,2 @@ -os::drivers - Rust

Module os::drivers

source ·

Re-exports

  • pub use block::BLOCK_DEVICE;
  • pub use block::BLOCK_DEVICE;
  • pub use chardev::UART;
  • pub use chardev::UART;
  • pub use bus::*;
  • pub use gpu::*;
  • pub use input::*;
  • pub use net::*;

Modules

\ No newline at end of file +os::drivers - Rust +

Module os::drivers

source ·

Re-exports

Modules

\ No newline at end of file diff --git a/ch9/os/drivers/input/constant.VIRTIO5.html b/ch9/os/drivers/input/constant.VIRTIO5.html index 383fbc55b..fc4747380 100644 --- a/ch9/os/drivers/input/constant.VIRTIO5.html +++ b/ch9/os/drivers/input/constant.VIRTIO5.html @@ -1 +1,2 @@ -VIRTIO5 in os::drivers::input - Rust

Constant os::drivers::input::VIRTIO5

source ·
const VIRTIO5: usize = 0x10005000;
\ No newline at end of file +VIRTIO5 in os::drivers::input - Rust +

Constant os::drivers::input::VIRTIO5

source ·
const VIRTIO5: usize = 0x10005000;
\ No newline at end of file diff --git a/ch9/os/drivers/input/constant.VIRTIO6.html b/ch9/os/drivers/input/constant.VIRTIO6.html index 70d50c5b6..487a4ac19 100644 --- a/ch9/os/drivers/input/constant.VIRTIO6.html +++ b/ch9/os/drivers/input/constant.VIRTIO6.html @@ -1 +1,2 @@ -VIRTIO6 in os::drivers::input - Rust

Constant os::drivers::input::VIRTIO6

source ·
const VIRTIO6: usize = 0x10006000;
\ No newline at end of file +VIRTIO6 in os::drivers::input - Rust +

Constant os::drivers::input::VIRTIO6

source ·
const VIRTIO6: usize = 0x10006000;
\ No newline at end of file diff --git a/ch9/os/drivers/input/index.html b/ch9/os/drivers/input/index.html index 48dcfa6c1..d6c288eab 100644 --- a/ch9/os/drivers/input/index.html +++ b/ch9/os/drivers/input/index.html @@ -1 +1,2 @@ -os::drivers::input - Rust
\ No newline at end of file +os::drivers::input - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/input/struct.KEYBOARD_DEVICE.html b/ch9/os/drivers/input/struct.KEYBOARD_DEVICE.html index 0b4a999a8..f2596f66b 100644 --- a/ch9/os/drivers/input/struct.KEYBOARD_DEVICE.html +++ b/ch9/os/drivers/input/struct.KEYBOARD_DEVICE.html @@ -1,25 +1,26 @@ -KEYBOARD_DEVICE in os::drivers::input - Rust
pub struct KEYBOARD_DEVICE {
+KEYBOARD_DEVICE in os::drivers::input - Rust
+    
pub struct KEYBOARD_DEVICE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for KEYBOARD_DEVICE

§

type Target = Arc<dyn InputDevice, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn InputDevice>

Dereferences the value.
source§

impl LazyStatic for KEYBOARD_DEVICE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for KEYBOARD_DEVICE

§

type Target = Arc<dyn InputDevice>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn InputDevice>

Dereferences the value.
source§

impl LazyStatic for KEYBOARD_DEVICE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/input/struct.MOUSE_DEVICE.html b/ch9/os/drivers/input/struct.MOUSE_DEVICE.html index e75d93556..017465693 100644 --- a/ch9/os/drivers/input/struct.MOUSE_DEVICE.html +++ b/ch9/os/drivers/input/struct.MOUSE_DEVICE.html @@ -1,25 +1,26 @@ -MOUSE_DEVICE in os::drivers::input - Rust

Struct os::drivers::input::MOUSE_DEVICE

source ·
pub struct MOUSE_DEVICE {
+MOUSE_DEVICE in os::drivers::input - Rust
+    

Struct os::drivers::input::MOUSE_DEVICE

source ·
pub struct MOUSE_DEVICE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for MOUSE_DEVICE

§

type Target = Arc<dyn InputDevice, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn InputDevice>

Dereferences the value.
source§

impl LazyStatic for MOUSE_DEVICE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for MOUSE_DEVICE

§

type Target = Arc<dyn InputDevice>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn InputDevice>

Dereferences the value.
source§

impl LazyStatic for MOUSE_DEVICE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/input/struct.VirtIOInputInner.html b/ch9/os/drivers/input/struct.VirtIOInputInner.html index 34ef12d57..1d93fa84e 100644 --- a/ch9/os/drivers/input/struct.VirtIOInputInner.html +++ b/ch9/os/drivers/input/struct.VirtIOInputInner.html @@ -1,26 +1,27 @@ -VirtIOInputInner in os::drivers::input - Rust
struct VirtIOInputInner {
+VirtIOInputInner in os::drivers::input - Rust
+    
struct VirtIOInputInner {
     virtio_input: VirtIOInput<'static, VirtioHal>,
     events: VecDeque<u64>,
-}

Fields§

§virtio_input: VirtIOInput<'static, VirtioHal>§events: VecDeque<u64>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§virtio_input: VirtIOInput<'static, VirtioHal>§events: VecDeque<u64>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/input/struct.VirtIOInputWrapper.html b/ch9/os/drivers/input/struct.VirtIOInputWrapper.html index a677955dc..82c9678af 100644 --- a/ch9/os/drivers/input/struct.VirtIOInputWrapper.html +++ b/ch9/os/drivers/input/struct.VirtIOInputWrapper.html @@ -1,26 +1,27 @@ -VirtIOInputWrapper in os::drivers::input - Rust
struct VirtIOInputWrapper {
+VirtIOInputWrapper in os::drivers::input - Rust
+    
struct VirtIOInputWrapper {
     inner: UPIntrFreeCell<VirtIOInputInner>,
     condvar: Condvar,
-}

Fields§

§inner: UPIntrFreeCell<VirtIOInputInner>§condvar: Condvar

Implementations§

source§

impl VirtIOInputWrapper

source

pub fn new(addr: usize) -> Self

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§inner: UPIntrFreeCell<VirtIOInputInner>§condvar: Condvar

Implementations§

source§

impl VirtIOInputWrapper

source

pub fn new(addr: usize) -> Self

Trait Implementations§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/input/trait.InputDevice.html b/ch9/os/drivers/input/trait.InputDevice.html index f17314d9e..3929df1ff 100644 --- a/ch9/os/drivers/input/trait.InputDevice.html +++ b/ch9/os/drivers/input/trait.InputDevice.html @@ -1,6 +1,7 @@ -InputDevice in os::drivers::input - Rust

Trait os::drivers::input::InputDevice

source ·
pub trait InputDevice: Send + Sync + Any {
+InputDevice in os::drivers::input - Rust
+    

Trait os::drivers::input::InputDevice

source ·
pub trait InputDevice: Send + Sync + Any {
     // Required methods
     fn read_event(&self) -> u64;
     fn handle_irq(&self);
     fn is_empty(&self) -> bool;
-}

Required Methods§

source

fn read_event(&self) -> u64

source

fn handle_irq(&self)

source

fn is_empty(&self) -> bool

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn read_event(&self) -> u64

source

fn handle_irq(&self)

source

fn is_empty(&self) -> bool

Implementors§

\ No newline at end of file diff --git a/ch9/os/drivers/net/constant.VIRTIO8.html b/ch9/os/drivers/net/constant.VIRTIO8.html index cabeece38..206995d9f 100644 --- a/ch9/os/drivers/net/constant.VIRTIO8.html +++ b/ch9/os/drivers/net/constant.VIRTIO8.html @@ -1 +1,2 @@ -VIRTIO8 in os::drivers::net - Rust

Constant os::drivers::net::VIRTIO8

source ·
const VIRTIO8: usize = 0x10004000;
\ No newline at end of file +VIRTIO8 in os::drivers::net - Rust +

Constant os::drivers::net::VIRTIO8

source ·
const VIRTIO8: usize = 0x10004000;
\ No newline at end of file diff --git a/ch9/os/drivers/net/index.html b/ch9/os/drivers/net/index.html index b12f6aeca..712ccda59 100644 --- a/ch9/os/drivers/net/index.html +++ b/ch9/os/drivers/net/index.html @@ -1 +1,2 @@ -os::drivers::net - Rust
\ No newline at end of file +os::drivers::net - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/net/struct.NET_DEVICE.html b/ch9/os/drivers/net/struct.NET_DEVICE.html index 6cc47c324..fe9e5c4a1 100644 --- a/ch9/os/drivers/net/struct.NET_DEVICE.html +++ b/ch9/os/drivers/net/struct.NET_DEVICE.html @@ -1,25 +1,26 @@ -NET_DEVICE in os::drivers::net - Rust

Struct os::drivers::net::NET_DEVICE

source ·
pub struct NET_DEVICE {
+NET_DEVICE in os::drivers::net - Rust
+    

Struct os::drivers::net::NET_DEVICE

source ·
pub struct NET_DEVICE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for NET_DEVICE

§

type Target = Arc<dyn NetDevice, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn NetDevice>

Dereferences the value.
source§

impl LazyStatic for NET_DEVICE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for NET_DEVICE

§

type Target = Arc<dyn NetDevice>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<dyn NetDevice>

Dereferences the value.
source§

impl LazyStatic for NET_DEVICE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/net/struct.VirtIONetWrapper.html b/ch9/os/drivers/net/struct.VirtIONetWrapper.html index e95378181..c061b7292 100644 --- a/ch9/os/drivers/net/struct.VirtIONetWrapper.html +++ b/ch9/os/drivers/net/struct.VirtIONetWrapper.html @@ -1,23 +1,24 @@ -VirtIONetWrapper in os::drivers::net - Rust
pub struct VirtIONetWrapper(UPIntrFreeCell<VirtIONet<'static, VirtioHal>>);

Tuple Fields§

§0: UPIntrFreeCell<VirtIONet<'static, VirtioHal>>

Implementations§

source§

impl VirtIONetWrapper

source

pub fn new() -> Self

Trait Implementations§

source§

impl NetDevice for VirtIONetWrapper

source§

fn transmit(&self, data: &[u8])

source§

fn receive(&self, data: &mut [u8]) -> usize

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+VirtIONetWrapper in os::drivers::net - Rust +
pub struct VirtIONetWrapper(UPIntrFreeCell<VirtIONet<'static, VirtioHal>>);

Tuple Fields§

§0: UPIntrFreeCell<VirtIONet<'static, VirtioHal>>

Implementations§

source§

impl VirtIONetWrapper

source

pub fn new() -> Self

Trait Implementations§

source§

impl NetDevice for VirtIONetWrapper

source§

fn transmit(&self, data: &[u8])

source§

fn receive(&self, data: &mut [u8]) -> usize

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/net/trait.NetDevice.html b/ch9/os/drivers/net/trait.NetDevice.html index 3f2cd8a67..8dc5677ee 100644 --- a/ch9/os/drivers/net/trait.NetDevice.html +++ b/ch9/os/drivers/net/trait.NetDevice.html @@ -1,5 +1,6 @@ -NetDevice in os::drivers::net - Rust

Trait os::drivers::net::NetDevice

source ·
pub trait NetDevice: Send + Sync + Any {
+NetDevice in os::drivers::net - Rust
+    

Trait os::drivers::net::NetDevice

source ·
pub trait NetDevice: Send + Sync + Any {
     // Required methods
     fn transmit(&self, data: &[u8]);
     fn receive(&self, data: &mut [u8]) -> usize;
-}

Required Methods§

source

fn transmit(&self, data: &[u8])

source

fn receive(&self, data: &mut [u8]) -> usize

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn transmit(&self, data: &[u8])

source

fn receive(&self, data: &mut [u8]) -> usize

Implementors§

\ No newline at end of file diff --git a/ch9/os/drivers/plic/enum.IntrTargetPriority.html b/ch9/os/drivers/plic/enum.IntrTargetPriority.html index 563b4642f..61bd7b4c8 100644 --- a/ch9/os/drivers/plic/enum.IntrTargetPriority.html +++ b/ch9/os/drivers/plic/enum.IntrTargetPriority.html @@ -1,27 +1,28 @@ -IntrTargetPriority in os::drivers::plic - Rust
pub enum IntrTargetPriority {
-    Machine,
-    Supervisor,
-}

Variants§

§

Machine

§

Supervisor

Implementations§

Trait Implementations§

source§

impl Clone for IntrTargetPriority

source§

fn clone(&self) -> IntrTargetPriority

Returns a copy 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 Copy for IntrTargetPriority

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+IntrTargetPriority in os::drivers::plic - Rust +
pub enum IntrTargetPriority {
+    Machine = 0,
+    Supervisor = 1,
+}

Variants§

§

Machine = 0

§

Supervisor = 1

Implementations§

Trait Implementations§

source§

impl Clone for IntrTargetPriority

source§

fn clone(&self) -> IntrTargetPriority

Returns a copy 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 Copy for IntrTargetPriority

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/drivers/plic/index.html b/ch9/os/drivers/plic/index.html index 39762ae77..09157683a 100644 --- a/ch9/os/drivers/plic/index.html +++ b/ch9/os/drivers/plic/index.html @@ -1 +1,2 @@ -os::drivers::plic - Rust
\ No newline at end of file +os::drivers::plic - Rust +
\ No newline at end of file diff --git a/ch9/os/drivers/plic/struct.PLIC.html b/ch9/os/drivers/plic/struct.PLIC.html index 76a55f61d..7846672da 100644 --- a/ch9/os/drivers/plic/struct.PLIC.html +++ b/ch9/os/drivers/plic/struct.PLIC.html @@ -1,6 +1,7 @@ -PLIC in os::drivers::plic - Rust

Struct os::drivers::plic::PLIC

source ·
pub struct PLIC {
+PLIC in os::drivers::plic - Rust
+    

Struct os::drivers::plic::PLIC

source ·
pub struct PLIC {
     base_addr: usize,
-}

Fields§

§base_addr: usize

Implementations§

Fields§

§base_addr: usize

Implementations§

source§

impl PLIC

source

fn priority_ptr(&self, intr_source_id: usize) -> *mut u32

source

fn hart_id_with_priority( hart_id: usize, target_priority: IntrTargetPriority ) -> usize

source

fn enable_ptr( @@ -44,26 +45,26 @@ hart_id: usize, target_priority: IntrTargetPriority, completion: u32 -)

Auto Trait Implementations§

§

impl RefUnwindSafe for PLIC

§

impl Send for PLIC

§

impl Sync for PLIC

§

impl Unpin for PLIC

§

impl UnwindSafe for PLIC

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+)

Auto Trait Implementations§

§

impl RefUnwindSafe for PLIC

§

impl Send for PLIC

§

impl Sync for PLIC

§

impl Unpin for PLIC

§

impl UnwindSafe for PLIC

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fn.clear_bss.html b/ch9/os/fn.clear_bss.html index 861305a3f..d87a254d1 100644 --- a/ch9/os/fn.clear_bss.html +++ b/ch9/os/fn.clear_bss.html @@ -1 +1,2 @@ -clear_bss in os - Rust

Function os::clear_bss

source ·
pub(crate) fn clear_bss()
\ No newline at end of file +clear_bss in os - Rust +

Function os::clear_bss

source ·
pub(crate) fn clear_bss()
\ No newline at end of file diff --git a/ch9/os/fn.rust_main.html b/ch9/os/fn.rust_main.html index 3e2826734..802229410 100644 --- a/ch9/os/fn.rust_main.html +++ b/ch9/os/fn.rust_main.html @@ -1,2 +1,3 @@ -rust_main in os - Rust

Function os::rust_main

source ·
#[no_mangle]
+rust_main in os - Rust
+    

Function os::rust_main

source ·
#[no_mangle]
 pub fn rust_main() -> !
\ No newline at end of file diff --git a/ch9/os/fs/index.html b/ch9/os/fs/index.html index 02cc452ea..1311411b0 100644 --- a/ch9/os/fs/index.html +++ b/ch9/os/fs/index.html @@ -1 +1,2 @@ -os::fs - Rust

Module os::fs

source ·

Re-exports

Modules

Traits

\ No newline at end of file +os::fs - Rust +

Module os::fs

source ·

Re-exports

Modules

Traits

\ No newline at end of file diff --git a/ch9/os/fs/inode/fn.list_apps.html b/ch9/os/fs/inode/fn.list_apps.html index 9c34135df..8ea94cc80 100644 --- a/ch9/os/fs/inode/fn.list_apps.html +++ b/ch9/os/fs/inode/fn.list_apps.html @@ -1 +1,2 @@ -list_apps in os::fs::inode - Rust

Function os::fs::inode::list_apps

source ·
pub fn list_apps()
\ No newline at end of file +list_apps in os::fs::inode - Rust +

Function os::fs::inode::list_apps

source ·
pub fn list_apps()
\ No newline at end of file diff --git a/ch9/os/fs/inode/fn.open_file.html b/ch9/os/fs/inode/fn.open_file.html index 51ff78866..1a38ee042 100644 --- a/ch9/os/fs/inode/fn.open_file.html +++ b/ch9/os/fs/inode/fn.open_file.html @@ -1 +1,2 @@ -open_file in os::fs::inode - Rust

Function os::fs::inode::open_file

source ·
pub fn open_file(name: &str, flags: OpenFlags) -> Option<Arc<OSInode>>
\ No newline at end of file +open_file in os::fs::inode - Rust +

Function os::fs::inode::open_file

source ·
pub fn open_file(name: &str, flags: OpenFlags) -> Option<Arc<OSInode>>
\ No newline at end of file diff --git a/ch9/os/fs/inode/index.html b/ch9/os/fs/inode/index.html index 104dc5f35..b9b58f916 100644 --- a/ch9/os/fs/inode/index.html +++ b/ch9/os/fs/inode/index.html @@ -1 +1,2 @@ -os::fs::inode - Rust
\ No newline at end of file +os::fs::inode - Rust +
\ No newline at end of file diff --git a/ch9/os/fs/inode/struct.OSInode.html b/ch9/os/fs/inode/struct.OSInode.html index 068dc6f8f..deb9584a0 100644 --- a/ch9/os/fs/inode/struct.OSInode.html +++ b/ch9/os/fs/inode/struct.OSInode.html @@ -1,27 +1,28 @@ -OSInode in os::fs::inode - Rust

Struct os::fs::inode::OSInode

source ·
pub struct OSInode {
+OSInode in os::fs::inode - Rust
+    

Struct os::fs::inode::OSInode

source ·
pub struct OSInode {
     readable: bool,
     writable: bool,
     inner: UPIntrFreeCell<OSInodeInner>,
-}

Fields§

§readable: bool§writable: bool§inner: UPIntrFreeCell<OSInodeInner>

Implementations§

source§

impl OSInode

source

pub fn new(readable: bool, writable: bool, inode: Arc<Inode>) -> Self

source

pub fn read_all(&self) -> Vec<u8>

Trait Implementations§

source§

impl File for OSInode

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§readable: bool§writable: bool§inner: UPIntrFreeCell<OSInodeInner>

Implementations§

source§

impl OSInode

source

pub fn new(readable: bool, writable: bool, inode: Arc<Inode>) -> Self

source

pub fn read_all(&self) -> Vec<u8>

Trait Implementations§

source§

impl File for OSInode

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/inode/struct.OSInodeInner.html b/ch9/os/fs/inode/struct.OSInodeInner.html index 4bdaa99c4..036da45b5 100644 --- a/ch9/os/fs/inode/struct.OSInodeInner.html +++ b/ch9/os/fs/inode/struct.OSInodeInner.html @@ -1,26 +1,27 @@ -OSInodeInner in os::fs::inode - Rust

Struct os::fs::inode::OSInodeInner

source ·
pub struct OSInodeInner {
+OSInodeInner in os::fs::inode - Rust
+    

Struct os::fs::inode::OSInodeInner

source ·
pub struct OSInodeInner {
     offset: usize,
     inode: Arc<Inode>,
-}

Fields§

§offset: usize§inode: Arc<Inode>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§offset: usize§inode: Arc<Inode>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/inode/struct.OpenFlags.html b/ch9/os/fs/inode/struct.OpenFlags.html index df65c515c..a20d9aea2 100644 --- a/ch9/os/fs/inode/struct.OpenFlags.html +++ b/ch9/os/fs/inode/struct.OpenFlags.html @@ -1,6 +1,7 @@ -OpenFlags in os::fs::inode - Rust

Struct os::fs::inode::OpenFlags

source ·
pub struct OpenFlags {
+OpenFlags in os::fs::inode - Rust
+    

Struct os::fs::inode::OpenFlags

source ·
pub struct OpenFlags {
     bits: u32,
-}

Fields§

§bits: u32

Implementations§

source§

impl OpenFlags

source

pub const RDONLY: Self = _

source

pub const WRONLY: Self = _

source

pub const RDWR: Self = _

source

pub const CREATE: Self = _

source

pub const TRUNC: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

+}

Fields§

§bits: u32

Implementations§

source§

impl OpenFlags

source

pub const RDONLY: Self = _

source

pub const WRONLY: Self = _

source

pub const RDWR: Self = _

source

pub const CREATE: Self = _

source

pub const TRUNC: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u32

Returns the raw value of the flags currently stored.

source

pub const fn from_bits(bits: u32) -> Option<Self>

Convert from underlying bit representation, unless that @@ -60,45 +61,45 @@

Safety
ops::Not), as in !flags.

source§

impl OpenFlags

source

pub fn read_write(&self) -> (bool, bool)

Do not check validity for simplicity Return (readable, writable)

-

Trait Implementations§

source§

impl Binary for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<OpenFlags> for OpenFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = OpenFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign<OpenFlags> for OpenFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

-
source§

impl BitOr<OpenFlags> for OpenFlags

source§

fn bitor(self, other: OpenFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = OpenFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign<OpenFlags> for OpenFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

-
source§

impl BitXor<OpenFlags> for OpenFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = OpenFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign<OpenFlags> for OpenFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for OpenFlags

source§

fn clone(&self) -> OpenFlags

Returns a copy 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 OpenFlags

source§

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

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

impl Extend<OpenFlags> for OpenFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<OpenFlags> for OpenFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for OpenFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Binary for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for OpenFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = OpenFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for OpenFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl BitOr for OpenFlags

source§

fn bitor(self, other: OpenFlags) -> Self

Returns the union of the two sets of flags.

+
§

type Output = OpenFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for OpenFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
source§

impl BitXor for OpenFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

+
§

type Output = OpenFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for OpenFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for OpenFlags

source§

fn clone(&self) -> OpenFlags

Returns a copy 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 OpenFlags

source§

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

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

impl Extend<OpenFlags> for OpenFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<OpenFlags> for OpenFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for OpenFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for OpenFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = OpenFlags

The resulting type after applying the ! operator.
source§

impl Octal for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for OpenFlags

source§

fn cmp(&self, other: &OpenFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<OpenFlags> for OpenFlags

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<OpenFlags> for OpenFlags

source§

fn partial_cmp(&self, other: &OpenFlags) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Sub<OpenFlags> for OpenFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = OpenFlags

The resulting type after applying the - operator.
source§

impl SubAssign<OpenFlags> for OpenFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for OpenFlags

source§

impl Eq for OpenFlags

source§

impl StructuralEq for OpenFlags

source§

impl StructuralPartialEq for OpenFlags

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for OpenFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = OpenFlags

The resulting type after applying the ! operator.
source§

impl Octal for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for OpenFlags

source§

fn cmp(&self, other: &OpenFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for OpenFlags

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for OpenFlags

source§

fn partial_cmp(&self, other: &OpenFlags) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Sub for OpenFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

+
§

type Output = OpenFlags

The resulting type after applying the - operator.
source§

impl SubAssign for OpenFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for OpenFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for OpenFlags

source§

impl Eq for OpenFlags

source§

impl StructuralEq for OpenFlags

source§

impl StructuralPartialEq for OpenFlags

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/inode/struct.ROOT_INODE.html b/ch9/os/fs/inode/struct.ROOT_INODE.html index 46034b365..ffb1759dc 100644 --- a/ch9/os/fs/inode/struct.ROOT_INODE.html +++ b/ch9/os/fs/inode/struct.ROOT_INODE.html @@ -1,25 +1,26 @@ -ROOT_INODE in os::fs::inode - Rust

Struct os::fs::inode::ROOT_INODE

source ·
pub struct ROOT_INODE {
+ROOT_INODE in os::fs::inode - Rust
+    

Struct os::fs::inode::ROOT_INODE

source ·
pub struct ROOT_INODE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for ROOT_INODE

§

type Target = Arc<Inode, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<Inode>

Dereferences the value.
source§

impl LazyStatic for ROOT_INODE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for ROOT_INODE

§

type Target = Arc<Inode>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<Inode>

Dereferences the value.
source§

impl LazyStatic for ROOT_INODE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/pipe/constant.RING_BUFFER_SIZE.html b/ch9/os/fs/pipe/constant.RING_BUFFER_SIZE.html index 1bf9fc0ba..b08f30276 100644 --- a/ch9/os/fs/pipe/constant.RING_BUFFER_SIZE.html +++ b/ch9/os/fs/pipe/constant.RING_BUFFER_SIZE.html @@ -1 +1,2 @@ -RING_BUFFER_SIZE in os::fs::pipe - Rust

Constant os::fs::pipe::RING_BUFFER_SIZE

source ·
const RING_BUFFER_SIZE: usize = 32;
\ No newline at end of file +RING_BUFFER_SIZE in os::fs::pipe - Rust +

Constant os::fs::pipe::RING_BUFFER_SIZE

source ·
const RING_BUFFER_SIZE: usize = 32;
\ No newline at end of file diff --git a/ch9/os/fs/pipe/enum.RingBufferStatus.html b/ch9/os/fs/pipe/enum.RingBufferStatus.html index 0f50d0528..21ed91d0c 100644 --- a/ch9/os/fs/pipe/enum.RingBufferStatus.html +++ b/ch9/os/fs/pipe/enum.RingBufferStatus.html @@ -1,30 +1,31 @@ -RingBufferStatus in os::fs::pipe - Rust

Enum os::fs::pipe::RingBufferStatus

source ·
enum RingBufferStatus {
+RingBufferStatus in os::fs::pipe - Rust
+    

Enum os::fs::pipe::RingBufferStatus

source ·
enum RingBufferStatus {
     Full,
     Empty,
     Normal,
-}

Variants§

§

Full

§

Empty

§

Normal

Trait Implementations§

source§

impl Clone for RingBufferStatus

source§

fn clone(&self) -> RingBufferStatus

Returns a copy 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 PartialEq<RingBufferStatus> for RingBufferStatus

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for RingBufferStatus

source§

impl StructuralPartialEq for RingBufferStatus

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Variants§

§

Full

§

Empty

§

Normal

Trait Implementations§

source§

impl Clone for RingBufferStatus

source§

fn clone(&self) -> RingBufferStatus

Returns a copy 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 PartialEq for RingBufferStatus

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Copy for RingBufferStatus

source§

impl StructuralPartialEq for RingBufferStatus

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/pipe/fn.make_pipe.html b/ch9/os/fs/pipe/fn.make_pipe.html index 34aa1b607..f4766c1e2 100644 --- a/ch9/os/fs/pipe/fn.make_pipe.html +++ b/ch9/os/fs/pipe/fn.make_pipe.html @@ -1,2 +1,3 @@ -make_pipe in os::fs::pipe - Rust

Function os::fs::pipe::make_pipe

source ·
pub fn make_pipe() -> (Arc<Pipe>, Arc<Pipe>)
Expand description

Return (read_end, write_end)

+make_pipe in os::fs::pipe - Rust +

Function os::fs::pipe::make_pipe

source ·
pub fn make_pipe() -> (Arc<Pipe>, Arc<Pipe>)
Expand description

Return (read_end, write_end)

\ No newline at end of file diff --git a/ch9/os/fs/pipe/index.html b/ch9/os/fs/pipe/index.html index db71b699f..c3360b9df 100644 --- a/ch9/os/fs/pipe/index.html +++ b/ch9/os/fs/pipe/index.html @@ -1 +1,2 @@ -os::fs::pipe - Rust
\ No newline at end of file +os::fs::pipe - Rust +
\ No newline at end of file diff --git a/ch9/os/fs/pipe/struct.Pipe.html b/ch9/os/fs/pipe/struct.Pipe.html index 1dc0a2241..83dfcf516 100644 --- a/ch9/os/fs/pipe/struct.Pipe.html +++ b/ch9/os/fs/pipe/struct.Pipe.html @@ -1,29 +1,30 @@ -Pipe in os::fs::pipe - Rust

Struct os::fs::pipe::Pipe

source ·
pub struct Pipe {
+Pipe in os::fs::pipe - Rust
+    

Struct os::fs::pipe::Pipe

source ·
pub struct Pipe {
     readable: bool,
     writable: bool,
     buffer: Arc<UPIntrFreeCell<PipeRingBuffer>>,
-}

Fields§

§readable: bool§writable: bool§buffer: Arc<UPIntrFreeCell<PipeRingBuffer>>

Implementations§

Fields§

§readable: bool§writable: bool§buffer: Arc<UPIntrFreeCell<PipeRingBuffer>>

Implementations§

Trait Implementations§

source§

impl File for Pipe

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl !RefUnwindSafe for Pipe

§

impl Send for Pipe

§

impl Sync for Pipe

§

impl Unpin for Pipe

§

impl !UnwindSafe for Pipe

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+) -> Self

Trait Implementations§

source§

impl File for Pipe

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl !RefUnwindSafe for Pipe

§

impl Send for Pipe

§

impl Sync for Pipe

§

impl Unpin for Pipe

§

impl !UnwindSafe for Pipe

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/pipe/struct.PipeRingBuffer.html b/ch9/os/fs/pipe/struct.PipeRingBuffer.html index 42942b944..655894777 100644 --- a/ch9/os/fs/pipe/struct.PipeRingBuffer.html +++ b/ch9/os/fs/pipe/struct.PipeRingBuffer.html @@ -1,29 +1,30 @@ -PipeRingBuffer in os::fs::pipe - Rust

Struct os::fs::pipe::PipeRingBuffer

source ·
pub struct PipeRingBuffer {
+PipeRingBuffer in os::fs::pipe - Rust
+    

Struct os::fs::pipe::PipeRingBuffer

source ·
pub struct PipeRingBuffer {
     arr: [u8; 32],
     head: usize,
     tail: usize,
     status: RingBufferStatus,
     write_end: Option<Weak<Pipe>>,
-}

Fields§

§arr: [u8; 32]§head: usize§tail: usize§status: RingBufferStatus§write_end: Option<Weak<Pipe>>

Implementations§

source§

impl PipeRingBuffer

source

pub fn new() -> Self

source

pub fn set_write_end(&mut self, write_end: &Arc<Pipe>)

source

pub fn write_byte(&mut self, byte: u8)

source

pub fn read_byte(&mut self) -> u8

source

pub fn available_read(&self) -> usize

source

pub fn available_write(&self) -> usize

source

pub fn all_write_ends_closed(&self) -> bool

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§arr: [u8; 32]§head: usize§tail: usize§status: RingBufferStatus§write_end: Option<Weak<Pipe>>

Implementations§

source§

impl PipeRingBuffer

source

pub fn new() -> Self

source

pub fn set_write_end(&mut self, write_end: &Arc<Pipe>)

source

pub fn write_byte(&mut self, byte: u8)

source

pub fn read_byte(&mut self) -> u8

source

pub fn available_read(&self) -> usize

source

pub fn available_write(&self) -> usize

source

pub fn all_write_ends_closed(&self) -> bool

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/stdio/index.html b/ch9/os/fs/stdio/index.html index addffd512..0c86263eb 100644 --- a/ch9/os/fs/stdio/index.html +++ b/ch9/os/fs/stdio/index.html @@ -1 +1,2 @@ -os::fs::stdio - Rust
\ No newline at end of file +os::fs::stdio - Rust +
\ No newline at end of file diff --git a/ch9/os/fs/stdio/struct.Stdin.html b/ch9/os/fs/stdio/struct.Stdin.html index b9a6cea51..5988d3888 100644 --- a/ch9/os/fs/stdio/struct.Stdin.html +++ b/ch9/os/fs/stdio/struct.Stdin.html @@ -1,23 +1,24 @@ -Stdin in os::fs::stdio - Rust

Struct os::fs::stdio::Stdin

source ·
pub struct Stdin;

Trait Implementations§

source§

impl File for Stdin

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, user_buf: UserBuffer) -> usize

source§

fn write(&self, _user_buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl RefUnwindSafe for Stdin

§

impl Send for Stdin

§

impl Sync for Stdin

§

impl Unpin for Stdin

§

impl UnwindSafe for Stdin

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+Stdin in os::fs::stdio - Rust +

Struct os::fs::stdio::Stdin

source ·
pub struct Stdin;

Trait Implementations§

source§

impl File for Stdin

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, user_buf: UserBuffer) -> usize

source§

fn write(&self, _user_buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl RefUnwindSafe for Stdin

§

impl Send for Stdin

§

impl Sync for Stdin

§

impl Unpin for Stdin

§

impl UnwindSafe for Stdin

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/stdio/struct.Stdout.html b/ch9/os/fs/stdio/struct.Stdout.html index d349dfbfe..14453ac6d 100644 --- a/ch9/os/fs/stdio/struct.Stdout.html +++ b/ch9/os/fs/stdio/struct.Stdout.html @@ -1,23 +1,24 @@ -Stdout in os::fs::stdio - Rust

Struct os::fs::stdio::Stdout

source ·
pub struct Stdout;

Trait Implementations§

source§

impl File for Stdout

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, _user_buf: UserBuffer) -> usize

source§

fn write(&self, user_buf: UserBuffer) -> usize

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+Stdout in os::fs::stdio - Rust +

Struct os::fs::stdio::Stdout

source ·
pub struct Stdout;

Trait Implementations§

source§

impl File for Stdout

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, _user_buf: UserBuffer) -> usize

source§

fn write(&self, user_buf: UserBuffer) -> usize

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/fs/trait.File.html b/ch9/os/fs/trait.File.html index e3067744a..89c97c7a1 100644 --- a/ch9/os/fs/trait.File.html +++ b/ch9/os/fs/trait.File.html @@ -1,7 +1,8 @@ -File in os::fs - Rust

Trait os::fs::File

source ·
pub trait File: Send + Sync {
+File in os::fs - Rust
+    

Trait os::fs::File

source ·
pub trait File: Send + Sync {
     // Required methods
     fn readable(&self) -> bool;
     fn writable(&self) -> bool;
     fn read(&self, buf: UserBuffer) -> usize;
     fn write(&self, buf: UserBuffer) -> usize;
-}

Required Methods§

source

fn readable(&self) -> bool

source

fn writable(&self) -> bool

source

fn read(&self, buf: UserBuffer) -> usize

source

fn write(&self, buf: UserBuffer) -> usize

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn readable(&self) -> bool

source

fn writable(&self) -> bool

source

fn read(&self, buf: UserBuffer) -> usize

source

fn write(&self, buf: UserBuffer) -> usize

Implementors§

\ No newline at end of file diff --git a/ch9/os/index.html b/ch9/os/index.html index a1a7e538d..b08e6956f 100644 --- a/ch9/os/index.html +++ b/ch9/os/index.html @@ -1 +1,3 @@ -os - Rust

Crate os

source ·

Modules

Macros

Structs

Functions

\ No newline at end of file +os - Rust +

Crate os

source ·

Modules

Macros

Structs

Functions

\ No newline at end of file diff --git a/ch9/os/lang_items/fn.backtrace.html b/ch9/os/lang_items/fn.backtrace.html index 0cf8eb369..2798400a9 100644 --- a/ch9/os/lang_items/fn.backtrace.html +++ b/ch9/os/lang_items/fn.backtrace.html @@ -1 +1,2 @@ -backtrace in os::lang_items - Rust

Function os::lang_items::backtrace

source ·
unsafe fn backtrace()
\ No newline at end of file +backtrace in os::lang_items - Rust +

Function os::lang_items::backtrace

source ·
unsafe fn backtrace()
\ No newline at end of file diff --git a/ch9/os/lang_items/fn.panic.html b/ch9/os/lang_items/fn.panic.html index 968fa896b..1ce7efee7 100644 --- a/ch9/os/lang_items/fn.panic.html +++ b/ch9/os/lang_items/fn.panic.html @@ -1 +1,2 @@ -panic in os::lang_items - Rust

Function os::lang_items::panic

source ·
fn panic(info: &PanicInfo<'_>) -> !
\ No newline at end of file +panic in os::lang_items - Rust +

Function os::lang_items::panic

source ·
fn panic(info: &PanicInfo<'_>) -> !
\ No newline at end of file diff --git a/ch9/os/lang_items/index.html b/ch9/os/lang_items/index.html index a389a6d6a..177be48a3 100644 --- a/ch9/os/lang_items/index.html +++ b/ch9/os/lang_items/index.html @@ -1 +1,2 @@ -os::lang_items - Rust

Module os::lang_items

source ·

Functions

\ No newline at end of file +os::lang_items - Rust +

Module os::lang_items

source ·

Functions

\ No newline at end of file diff --git a/ch9/os/macro.print.html b/ch9/os/macro.print.html index aecfa843e..212aefcfb 100644 --- a/ch9/os/macro.print.html +++ b/ch9/os/macro.print.html @@ -1,3 +1,4 @@ -print in os - Rust

Macro os::print

source ·
macro_rules! print {
+print in os - Rust
+    

Macro os::print

source ·
macro_rules! print {
     ($fmt: literal $(, $($arg: tt)+)?) => { ... };
 }
\ No newline at end of file diff --git a/ch9/os/macro.println.html b/ch9/os/macro.println.html index 962cf9f9a..59cf1672f 100644 --- a/ch9/os/macro.println.html +++ b/ch9/os/macro.println.html @@ -1,3 +1,4 @@ -println in os - Rust

Macro os::println

source ·
macro_rules! println {
+println in os - Rust
+    

Macro os::println

source ·
macro_rules! println {
     ($fmt: literal $(, $($arg: tt)+)?) => { ... };
 }
\ No newline at end of file diff --git a/ch9/os/mm/address/constant.PA_WIDTH_SV39.html b/ch9/os/mm/address/constant.PA_WIDTH_SV39.html index 46e396568..8a2c8bf90 100644 --- a/ch9/os/mm/address/constant.PA_WIDTH_SV39.html +++ b/ch9/os/mm/address/constant.PA_WIDTH_SV39.html @@ -1 +1,2 @@ -PA_WIDTH_SV39 in os::mm::address - Rust

Constant os::mm::address::PA_WIDTH_SV39

source ·
const PA_WIDTH_SV39: usize = 56;
\ No newline at end of file +PA_WIDTH_SV39 in os::mm::address - Rust +

Constant os::mm::address::PA_WIDTH_SV39

source ·
const PA_WIDTH_SV39: usize = 56;
\ No newline at end of file diff --git a/ch9/os/mm/address/constant.PPN_WIDTH_SV39.html b/ch9/os/mm/address/constant.PPN_WIDTH_SV39.html index 411ccf902..93b0790a5 100644 --- a/ch9/os/mm/address/constant.PPN_WIDTH_SV39.html +++ b/ch9/os/mm/address/constant.PPN_WIDTH_SV39.html @@ -1 +1,2 @@ -PPN_WIDTH_SV39 in os::mm::address - Rust

Constant os::mm::address::PPN_WIDTH_SV39

source ·
const PPN_WIDTH_SV39: usize = _; // 44usize
\ No newline at end of file +PPN_WIDTH_SV39 in os::mm::address - Rust +

Constant os::mm::address::PPN_WIDTH_SV39

source ·
const PPN_WIDTH_SV39: usize = _; // 44usize
\ No newline at end of file diff --git a/ch9/os/mm/address/constant.VA_WIDTH_SV39.html b/ch9/os/mm/address/constant.VA_WIDTH_SV39.html index eedefb5e1..ce0bd0ba1 100644 --- a/ch9/os/mm/address/constant.VA_WIDTH_SV39.html +++ b/ch9/os/mm/address/constant.VA_WIDTH_SV39.html @@ -1 +1,2 @@ -VA_WIDTH_SV39 in os::mm::address - Rust

Constant os::mm::address::VA_WIDTH_SV39

source ·
const VA_WIDTH_SV39: usize = 39;
\ No newline at end of file +VA_WIDTH_SV39 in os::mm::address - Rust +

Constant os::mm::address::VA_WIDTH_SV39

source ·
const VA_WIDTH_SV39: usize = 39;
\ No newline at end of file diff --git a/ch9/os/mm/address/constant.VPN_WIDTH_SV39.html b/ch9/os/mm/address/constant.VPN_WIDTH_SV39.html index c3b60c1bc..26803d193 100644 --- a/ch9/os/mm/address/constant.VPN_WIDTH_SV39.html +++ b/ch9/os/mm/address/constant.VPN_WIDTH_SV39.html @@ -1 +1,2 @@ -VPN_WIDTH_SV39 in os::mm::address - Rust

Constant os::mm::address::VPN_WIDTH_SV39

source ·
const VPN_WIDTH_SV39: usize = _; // 27usize
\ No newline at end of file +VPN_WIDTH_SV39 in os::mm::address - Rust +

Constant os::mm::address::VPN_WIDTH_SV39

source ·
const VPN_WIDTH_SV39: usize = _; // 27usize
\ No newline at end of file diff --git a/ch9/os/mm/address/index.html b/ch9/os/mm/address/index.html index d14c0ce2e..78e31d5ac 100644 --- a/ch9/os/mm/address/index.html +++ b/ch9/os/mm/address/index.html @@ -1 +1,2 @@ -os::mm::address - Rust
\ No newline at end of file +os::mm::address - Rust +
\ No newline at end of file diff --git a/ch9/os/mm/address/struct.PhysAddr.html b/ch9/os/mm/address/struct.PhysAddr.html index 968bdaf45..9e2defe37 100644 --- a/ch9/os/mm/address/struct.PhysAddr.html +++ b/ch9/os/mm/address/struct.PhysAddr.html @@ -1,35 +1,36 @@ -PhysAddr in os::mm::address - Rust

Struct os::mm::address::PhysAddr

source ·
#[repr(C)]
pub struct PhysAddr(pub usize);
Expand description

Definitions

-

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysAddr

source

pub fn floor(&self) -> PhysPageNum

source

pub fn ceil(&self) -> PhysPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

source§

impl PhysAddr

source

pub fn get_ref<T>(&self) -> &'static T

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

Returns a copy 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 PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} +PhysAddr in os::mm::address - Rust

+

Struct os::mm::address::PhysAddr

source ·
#[repr(C)]
pub struct PhysAddr(pub usize);
Expand description

Definitions

+

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysAddr

source

pub fn floor(&self) -> PhysPageNum

source

pub fn ceil(&self) -> PhysPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

source§

impl PhysAddr

source

pub fn get_ref<T>(&self) -> &'static T

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysAddr

source§

fn clone(&self) -> PhysAddr

Returns a copy 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 PhysAddr

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysAddr> for usize

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysAddr

T: {PhysAddr, VirtAddr, PhysPageNum, VirtPageNum} T -> usize: T.0 usize -> T: usize.into()

-
source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysAddr

source§

fn cmp(&self, other: &PhysAddr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<PhysAddr> for PhysAddr

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<PhysAddr> for PhysAddr

source§

fn partial_cmp(&self, other: &PhysAddr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Copy for PhysAddr

source§

impl Eq for PhysAddr

source§

impl StructuralEq for PhysAddr

source§

impl StructuralPartialEq for PhysAddr

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+
source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysAddr

source§

fn cmp(&self, other: &PhysAddr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for PhysAddr

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for PhysAddr

source§

fn partial_cmp(&self, other: &PhysAddr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Copy for PhysAddr

source§

impl Eq for PhysAddr

source§

impl StructuralEq for PhysAddr

source§

impl StructuralPartialEq for PhysAddr

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/address/struct.PhysPageNum.html b/ch9/os/mm/address/struct.PhysPageNum.html index bcd55dc63..8badfdc88 100644 --- a/ch9/os/mm/address/struct.PhysPageNum.html +++ b/ch9/os/mm/address/struct.PhysPageNum.html @@ -1,31 +1,32 @@ -PhysPageNum in os::mm::address - Rust

Struct os::mm::address::PhysPageNum

source ·
#[repr(C)]
pub struct PhysPageNum(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysPageNum

source

pub fn get_pte_array(&self) -> &'static mut [PageTableEntry]

source

pub fn get_bytes_array(&self) -> &'static mut [u8]

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

Returns a copy 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 PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

fn cmp(&self, other: &PhysPageNum) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<PhysPageNum> for PhysPageNum

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<PhysPageNum> for PhysPageNum

source§

fn partial_cmp(&self, other: &PhysPageNum) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl StepByOne for PhysPageNum

source§

fn step(&mut self)

source§

impl Copy for PhysPageNum

source§

impl Eq for PhysPageNum

source§

impl StructuralEq for PhysPageNum

source§

impl StructuralPartialEq for PhysPageNum

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+PhysPageNum in os::mm::address - Rust +

Struct os::mm::address::PhysPageNum

source ·
#[repr(C)]
pub struct PhysPageNum(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl PhysPageNum

source

pub fn get_pte_array(&self) -> &'static mut [PageTableEntry]

source

pub fn get_bytes_array(&self) -> &'static mut [u8]

source

pub fn get_mut<T>(&self) -> &'static mut T

Trait Implementations§

source§

impl Clone for PhysPageNum

source§

fn clone(&self) -> PhysPageNum

Returns a copy 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 PhysPageNum

source§

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

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

impl From<PhysAddr> for PhysPageNum

source§

fn from(v: PhysAddr) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for PhysAddr

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<PhysPageNum> for usize

source§

fn from(v: PhysPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for PhysPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for PhysPageNum

source§

fn cmp(&self, other: &PhysPageNum) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for PhysPageNum

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for PhysPageNum

source§

fn partial_cmp(&self, other: &PhysPageNum) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl StepByOne for PhysPageNum

source§

fn step(&mut self)

source§

impl Copy for PhysPageNum

source§

impl Eq for PhysPageNum

source§

impl StructuralEq for PhysPageNum

source§

impl StructuralPartialEq for PhysPageNum

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/address/struct.SimpleRange.html b/ch9/os/mm/address/struct.SimpleRange.html index fc4906fd5..a78327f07 100644 --- a/ch9/os/mm/address/struct.SimpleRange.html +++ b/ch9/os/mm/address/struct.SimpleRange.html @@ -1,37 +1,38 @@ -SimpleRange in os::mm::address - Rust

Struct os::mm::address::SimpleRange

source ·
pub struct SimpleRange<T>where
-    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,{
+SimpleRange in os::mm::address - Rust
+    

Struct os::mm::address::SimpleRange

source ·
pub struct SimpleRange<T>{
     l: T,
     r: T,
-}

Fields§

§l: T§r: T

Implementations§

source§

impl<T> SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug,

source

pub fn new(start: T, end: T) -> Self

source

pub fn get_start(&self) -> T

source

pub fn get_end(&self) -> T

Trait Implementations§

source§

impl<T> Clone for SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug + Clone,

source§

fn clone(&self) -> SimpleRange<T>

Returns a copy 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<T> IntoIterator for SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug,

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = SimpleRangeIterator<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T> Copy for SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug + Copy,

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for SimpleRange<T>where - T: RefUnwindSafe,

§

impl<T> Send for SimpleRange<T>where - T: Send,

§

impl<T> Sync for SimpleRange<T>where - T: Sync,

§

impl<T> Unpin for SimpleRange<T>where - T: Unpin,

§

impl<T> UnwindSafe for SimpleRange<T>where - T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§l: T§r: T

Implementations§

source§

impl<T> SimpleRange<T>

source

pub fn new(start: T, end: T) -> Self

source

pub fn get_start(&self) -> T

source

pub fn get_end(&self) -> T

Trait Implementations§

source§

impl<T> Clone for SimpleRange<T>

source§

fn clone(&self) -> SimpleRange<T>

Returns a copy 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<T> IntoIterator for SimpleRange<T>

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = SimpleRangeIterator<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T> Copy for SimpleRange<T>

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for SimpleRange<T>
where + T: RefUnwindSafe,

§

impl<T> Send for SimpleRange<T>
where + T: Send,

§

impl<T> Sync for SimpleRange<T>
where + T: Sync,

§

impl<T> Unpin for SimpleRange<T>
where + T: Unpin,

§

impl<T> UnwindSafe for SimpleRange<T>
where + T: UnwindSafe,

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/address/struct.SimpleRangeIterator.html b/ch9/os/mm/address/struct.SimpleRangeIterator.html index 51e486951..ad2d1d42e 100644 --- a/ch9/os/mm/address/struct.SimpleRangeIterator.html +++ b/ch9/os/mm/address/struct.SimpleRangeIterator.html @@ -1,215 +1,213 @@ -SimpleRangeIterator in os::mm::address - Rust
pub struct SimpleRangeIterator<T>where
-    T: StepByOne + Copy + PartialEq + PartialOrd + Debug,{
+SimpleRangeIterator in os::mm::address - Rust
+    
pub struct SimpleRangeIterator<T>{
     current: T,
     end: T,
-}

Fields§

§current: T§end: T

Implementations§

source§

impl<T> SimpleRangeIterator<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug,

source

pub fn new(l: T, r: T) -> Self

Trait Implementations§

source§

impl<T> Iterator for SimpleRangeIterator<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug,

§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( +}

Fields§

§current: T§end: T

Implementations§

source§

impl<T> SimpleRangeIterator<T>

source

pub fn new(l: T, r: T) -> Self

Trait Implementations§

source§

impl<T> Iterator for SimpleRangeIterator<T>

§

type Item = T

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods + F: FnMut(Self::Item) -> Option<B>,
Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where Self: Sized, U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over + F: FnMut(&[Self::Item; N]) -> R,
🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where +the windows during mapping overlap as well. Read more

1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where Self: Sized, B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where Self: Sized, F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where Self: Sized, F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<F, R>( + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where Self: Sized, F: FnMut(Self::Item, Self::Item) -> R, R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<F, R>( + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where Self: Sized, F: FnMut(&Self::Item) -> R, R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where FromA: Default + Extend<A>, FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where Self: Sized, I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of + Self: Sized,
Lexicographically compares the PartialOrd elements of this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where +As soon as an order can be determined, the evaluation stops and a result is returned. Read more

source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where Self: Sized, I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where Self: Sized, I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for SimpleRangeIterator<T>where - T: RefUnwindSafe,

§

impl<T> Send for SimpleRangeIterator<T>where - T: Send,

§

impl<T> Sync for SimpleRangeIterator<T>where - T: Sync,

§

impl<T> Unpin for SimpleRangeIterator<T>where - T: Unpin,

§

impl<T> UnwindSafe for SimpleRangeIterator<T>where - T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ K: PartialOrd,
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for SimpleRangeIterator<T>
where + T: RefUnwindSafe,

§

impl<T> Send for SimpleRangeIterator<T>
where + T: Send,

§

impl<T> Sync for SimpleRangeIterator<T>
where + T: Sync,

§

impl<T> Unpin for SimpleRangeIterator<T>
where + T: Unpin,

§

impl<T> UnwindSafe for SimpleRangeIterator<T>
where + T: UnwindSafe,

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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<I> IntoIterator for Iwhere - I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
§

impl<I, C> PixelIteratorExt<C> for Iwhere - C: PixelColor, - I: Iterator<Item = Pixel<C>>,

§

fn draw<D>(self, target: &mut D) -> Result<(), <D as DrawTarget>::Error>where - D: DrawTarget<Color = C>,

Draws the pixel iterator to a draw target.
§

fn translated(self, offset: Point) -> Translated<I>

Returns a translated version of the iterator.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/address/struct.VirtAddr.html b/ch9/os/mm/address/struct.VirtAddr.html index 534deeb85..2b1d8bf67 100644 --- a/ch9/os/mm/address/struct.VirtAddr.html +++ b/ch9/os/mm/address/struct.VirtAddr.html @@ -1,32 +1,33 @@ -VirtAddr in os::mm::address - Rust

Struct os::mm::address::VirtAddr

source ·
#[repr(C)]
pub struct VirtAddr(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtAddr

source

pub fn floor(&self) -> VirtPageNum

source

pub fn ceil(&self) -> VirtPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

Trait Implementations§

source§

impl Clone for VirtAddr

source§

fn clone(&self) -> VirtAddr

Returns a copy 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 VirtAddr

Debugging

-
source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

fn cmp(&self, other: &VirtAddr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<VirtAddr> for VirtAddr

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<VirtAddr> for VirtAddr

source§

fn partial_cmp(&self, other: &VirtAddr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Copy for VirtAddr

source§

impl Eq for VirtAddr

source§

impl StructuralEq for VirtAddr

source§

impl StructuralPartialEq for VirtAddr

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+VirtAddr in os::mm::address - Rust +

Struct os::mm::address::VirtAddr

source ·
#[repr(C)]
pub struct VirtAddr(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtAddr

source

pub fn floor(&self) -> VirtPageNum

source

pub fn ceil(&self) -> VirtPageNum

source

pub fn page_offset(&self) -> usize

source

pub fn aligned(&self) -> bool

Trait Implementations§

source§

impl Clone for VirtAddr

source§

fn clone(&self) -> VirtAddr

Returns a copy 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 VirtAddr

Debugging

+
source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtAddr> for usize

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtAddr

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtAddr

source§

fn cmp(&self, other: &VirtAddr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for VirtAddr

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for VirtAddr

source§

fn partial_cmp(&self, other: &VirtAddr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Copy for VirtAddr

source§

impl Eq for VirtAddr

source§

impl StructuralEq for VirtAddr

source§

impl StructuralPartialEq for VirtAddr

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/address/struct.VirtPageNum.html b/ch9/os/mm/address/struct.VirtPageNum.html index 9c934f54a..3dd57c32f 100644 --- a/ch9/os/mm/address/struct.VirtPageNum.html +++ b/ch9/os/mm/address/struct.VirtPageNum.html @@ -1,31 +1,32 @@ -VirtPageNum in os::mm::address - Rust

Struct os::mm::address::VirtPageNum

source ·
#[repr(C)]
pub struct VirtPageNum(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtPageNum

source

pub fn indexes(&self) -> [usize; 3]

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

Returns a copy 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 VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

fn cmp(&self, other: &VirtPageNum) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<VirtPageNum> for VirtPageNum

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<VirtPageNum> for VirtPageNum

source§

fn partial_cmp(&self, other: &VirtPageNum) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl StepByOne for VirtPageNum

source§

fn step(&mut self)

source§

impl Copy for VirtPageNum

source§

impl Eq for VirtPageNum

source§

impl StructuralEq for VirtPageNum

source§

impl StructuralPartialEq for VirtPageNum

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+VirtPageNum in os::mm::address - Rust +

Struct os::mm::address::VirtPageNum

source ·
#[repr(C)]
pub struct VirtPageNum(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl VirtPageNum

source

pub fn indexes(&self) -> [usize; 3]

Trait Implementations§

source§

impl Clone for VirtPageNum

source§

fn clone(&self) -> VirtPageNum

Returns a copy 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 VirtPageNum

source§

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

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

impl From<VirtAddr> for VirtPageNum

source§

fn from(v: VirtAddr) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for VirtAddr

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<VirtPageNum> for usize

source§

fn from(v: VirtPageNum) -> Self

Converts to this type from the input type.
source§

impl From<usize> for VirtPageNum

source§

fn from(v: usize) -> Self

Converts to this type from the input type.
source§

impl Ord for VirtPageNum

source§

fn cmp(&self, other: &VirtPageNum) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for VirtPageNum

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for VirtPageNum

source§

fn partial_cmp(&self, other: &VirtPageNum) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl StepByOne for VirtPageNum

source§

fn step(&mut self)

source§

impl Copy for VirtPageNum

source§

impl Eq for VirtPageNum

source§

impl StructuralEq for VirtPageNum

source§

impl StructuralPartialEq for VirtPageNum

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/address/trait.StepByOne.html b/ch9/os/mm/address/trait.StepByOne.html index 1b24e2537..16988b300 100644 --- a/ch9/os/mm/address/trait.StepByOne.html +++ b/ch9/os/mm/address/trait.StepByOne.html @@ -1,4 +1,5 @@ -StepByOne in os::mm::address - Rust

Trait os::mm::address::StepByOne

source ·
pub trait StepByOne {
+StepByOne in os::mm::address - Rust
+    

Trait os::mm::address::StepByOne

source ·
pub trait StepByOne {
     // Required method
     fn step(&mut self);
-}

Required Methods§

source

fn step(&mut self)

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn step(&mut self)

Implementors§

\ No newline at end of file diff --git a/ch9/os/mm/address/type.VPNRange.html b/ch9/os/mm/address/type.VPNRange.html index 645bed3cc..2803ea073 100644 --- a/ch9/os/mm/address/type.VPNRange.html +++ b/ch9/os/mm/address/type.VPNRange.html @@ -1,8 +1,5 @@ -VPNRange in os::mm::address - Rust

Type Alias os::mm::address::VPNRange

source ·
pub type VPNRange = SimpleRange<VirtPageNum>;

Aliased Type§

struct VPNRange {
+VPNRange in os::mm::address - Rust
+    

Type Alias os::mm::address::VPNRange

source ·
pub type VPNRange = SimpleRange<VirtPageNum>;

Aliased Type§

struct VPNRange {
     l: VirtPageNum,
     r: VirtPageNum,
-}

Fields§

§l: VirtPageNum§r: VirtPageNum

Implementations§

source§

impl<T> SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug,

source

pub fn new(start: T, end: T) -> Self

source

pub fn get_start(&self) -> T

source

pub fn get_end(&self) -> T

Trait Implementations§

source§

impl<T> Clone for SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug + Clone,

source§

fn clone(&self) -> SimpleRange<T>

Returns a copy 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<T> IntoIterator for SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug,

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = SimpleRangeIterator<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T> Copy for SimpleRange<T>where - T: StepByOne + Copy + PartialEq + PartialOrd + Debug + Copy,

\ No newline at end of file +}

Fields§

§l: VirtPageNum§r: VirtPageNum
\ No newline at end of file diff --git a/ch9/os/mm/fn.init.html b/ch9/os/mm/fn.init.html index 5af4a4865..6ad7cb31a 100644 --- a/ch9/os/mm/fn.init.html +++ b/ch9/os/mm/fn.init.html @@ -1 +1,2 @@ -init in os::mm - Rust

Function os::mm::init

source ·
pub fn init()
\ No newline at end of file +init in os::mm - Rust +

Function os::mm::init

source ·
pub fn init()
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/fn.frame_alloc.html b/ch9/os/mm/frame_allocator/fn.frame_alloc.html index e18d5b31e..0d80bc689 100644 --- a/ch9/os/mm/frame_allocator/fn.frame_alloc.html +++ b/ch9/os/mm/frame_allocator/fn.frame_alloc.html @@ -1 +1,2 @@ -frame_alloc in os::mm::frame_allocator - Rust

Function os::mm::frame_allocator::frame_alloc

source ·
pub fn frame_alloc() -> Option<FrameTracker>
\ No newline at end of file +frame_alloc in os::mm::frame_allocator - Rust +

Function os::mm::frame_allocator::frame_alloc

source ·
pub fn frame_alloc() -> Option<FrameTracker>
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/fn.frame_alloc_more.html b/ch9/os/mm/frame_allocator/fn.frame_alloc_more.html index be381a5b0..df31ad292 100644 --- a/ch9/os/mm/frame_allocator/fn.frame_alloc_more.html +++ b/ch9/os/mm/frame_allocator/fn.frame_alloc_more.html @@ -1 +1,2 @@ -frame_alloc_more in os::mm::frame_allocator - Rust
pub fn frame_alloc_more(num: usize) -> Option<Vec<FrameTracker>>
\ No newline at end of file +frame_alloc_more in os::mm::frame_allocator - Rust +
pub fn frame_alloc_more(num: usize) -> Option<Vec<FrameTracker>>
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/fn.frame_allocator_alloc_more_test.html b/ch9/os/mm/frame_allocator/fn.frame_allocator_alloc_more_test.html index 922c9bb5e..01190847f 100644 --- a/ch9/os/mm/frame_allocator/fn.frame_allocator_alloc_more_test.html +++ b/ch9/os/mm/frame_allocator/fn.frame_allocator_alloc_more_test.html @@ -1 +1,2 @@ -frame_allocator_alloc_more_test in os::mm::frame_allocator - Rust
pub fn frame_allocator_alloc_more_test()
\ No newline at end of file +frame_allocator_alloc_more_test in os::mm::frame_allocator - Rust +
pub fn frame_allocator_alloc_more_test()
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/fn.frame_allocator_test.html b/ch9/os/mm/frame_allocator/fn.frame_allocator_test.html index 277ea7757..74adca865 100644 --- a/ch9/os/mm/frame_allocator/fn.frame_allocator_test.html +++ b/ch9/os/mm/frame_allocator/fn.frame_allocator_test.html @@ -1 +1,2 @@ -frame_allocator_test in os::mm::frame_allocator - Rust
pub fn frame_allocator_test()
\ No newline at end of file +frame_allocator_test in os::mm::frame_allocator - Rust +
pub fn frame_allocator_test()
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/fn.frame_dealloc.html b/ch9/os/mm/frame_allocator/fn.frame_dealloc.html index 223eb64b2..c76f075dc 100644 --- a/ch9/os/mm/frame_allocator/fn.frame_dealloc.html +++ b/ch9/os/mm/frame_allocator/fn.frame_dealloc.html @@ -1 +1,2 @@ -frame_dealloc in os::mm::frame_allocator - Rust
pub fn frame_dealloc(ppn: PhysPageNum)
\ No newline at end of file +frame_dealloc in os::mm::frame_allocator - Rust +
pub fn frame_dealloc(ppn: PhysPageNum)
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/fn.init_frame_allocator.html b/ch9/os/mm/frame_allocator/fn.init_frame_allocator.html index 638f3e1d4..368f32052 100644 --- a/ch9/os/mm/frame_allocator/fn.init_frame_allocator.html +++ b/ch9/os/mm/frame_allocator/fn.init_frame_allocator.html @@ -1 +1,2 @@ -init_frame_allocator in os::mm::frame_allocator - Rust
pub fn init_frame_allocator()
\ No newline at end of file +init_frame_allocator in os::mm::frame_allocator - Rust +
pub fn init_frame_allocator()
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/index.html b/ch9/os/mm/frame_allocator/index.html index 2e2de4cbb..2e6afb9e5 100644 --- a/ch9/os/mm/frame_allocator/index.html +++ b/ch9/os/mm/frame_allocator/index.html @@ -1 +1,2 @@ -os::mm::frame_allocator - Rust
\ No newline at end of file +os::mm::frame_allocator - Rust +
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html b/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html index ffa9ae5a7..f3c3a5b72 100644 --- a/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html +++ b/ch9/os/mm/frame_allocator/struct.FRAME_ALLOCATOR.html @@ -1,27 +1,28 @@ -FRAME_ALLOCATOR in os::mm::frame_allocator - Rust
pub struct FRAME_ALLOCATOR {
+FRAME_ALLOCATOR in os::mm::frame_allocator - Rust
+    
pub struct FRAME_ALLOCATOR {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<StackFrameAllocator>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for FRAME_ALLOCATOR

§

type Target = UPIntrFreeCell<StackFrameAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<StackFrameAllocator>

Dereferences the value.
source§

impl LazyStatic for FRAME_ALLOCATOR

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<StackFrameAllocator>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for FRAME_ALLOCATOR

§

type Target = UPIntrFreeCell<StackFrameAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<StackFrameAllocator>

Dereferences the value.
source§

impl LazyStatic for FRAME_ALLOCATOR

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/struct.FrameTracker.html b/ch9/os/mm/frame_allocator/struct.FrameTracker.html index 7d10bd7da..8acce170f 100644 --- a/ch9/os/mm/frame_allocator/struct.FrameTracker.html +++ b/ch9/os/mm/frame_allocator/struct.FrameTracker.html @@ -1,25 +1,26 @@ -FrameTracker in os::mm::frame_allocator - Rust
pub struct FrameTracker {
+FrameTracker in os::mm::frame_allocator - Rust
+    
pub struct FrameTracker {
     pub ppn: PhysPageNum,
-}

Fields§

§ppn: PhysPageNum

Implementations§

source§

impl FrameTracker

source

pub fn new(ppn: PhysPageNum) -> Self

Trait Implementations§

source§

impl Debug for FrameTracker

source§

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

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

impl Drop for FrameTracker

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§ppn: PhysPageNum

Implementations§

source§

impl FrameTracker

source

pub fn new(ppn: PhysPageNum) -> Self

Trait Implementations§

source§

impl Debug for FrameTracker

source§

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

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

impl Drop for FrameTracker

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/struct.StackFrameAllocator.html b/ch9/os/mm/frame_allocator/struct.StackFrameAllocator.html index a47c9e048..04212ebaa 100644 --- a/ch9/os/mm/frame_allocator/struct.StackFrameAllocator.html +++ b/ch9/os/mm/frame_allocator/struct.StackFrameAllocator.html @@ -1,27 +1,28 @@ -StackFrameAllocator in os::mm::frame_allocator - Rust
pub struct StackFrameAllocator {
+StackFrameAllocator in os::mm::frame_allocator - Rust
+    
pub struct StackFrameAllocator {
     current: usize,
     end: usize,
     recycled: Vec<usize>,
-}

Fields§

§current: usize§end: usize§recycled: Vec<usize>

Implementations§

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§current: usize§end: usize§recycled: Vec<usize>

Implementations§

Trait Implementations§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/trait.FrameAllocator.html b/ch9/os/mm/frame_allocator/trait.FrameAllocator.html index fca548ff9..6b0c0483f 100644 --- a/ch9/os/mm/frame_allocator/trait.FrameAllocator.html +++ b/ch9/os/mm/frame_allocator/trait.FrameAllocator.html @@ -1,7 +1,8 @@ -FrameAllocator in os::mm::frame_allocator - Rust
trait FrameAllocator {
+FrameAllocator in os::mm::frame_allocator - Rust
+    
trait FrameAllocator {
     // Required methods
     fn new() -> Self;
     fn alloc(&mut self) -> Option<PhysPageNum>;
     fn alloc_more(&mut self, pages: usize) -> Option<Vec<PhysPageNum>>;
     fn dealloc(&mut self, ppn: PhysPageNum);
-}

Required Methods§

source

fn new() -> Self

source

fn alloc(&mut self) -> Option<PhysPageNum>

source

fn alloc_more(&mut self, pages: usize) -> Option<Vec<PhysPageNum>>

source

fn dealloc(&mut self, ppn: PhysPageNum)

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn new() -> Self

source

fn alloc(&mut self) -> Option<PhysPageNum>

source

fn alloc_more(&mut self, pages: usize) -> Option<Vec<PhysPageNum>>

source

fn dealloc(&mut self, ppn: PhysPageNum)

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/ch9/os/mm/frame_allocator/type.FrameAllocatorImpl.html b/ch9/os/mm/frame_allocator/type.FrameAllocatorImpl.html index 2e48d590a..784aa62c3 100644 --- a/ch9/os/mm/frame_allocator/type.FrameAllocatorImpl.html +++ b/ch9/os/mm/frame_allocator/type.FrameAllocatorImpl.html @@ -1,5 +1,6 @@ -FrameAllocatorImpl in os::mm::frame_allocator - Rust
type FrameAllocatorImpl = StackFrameAllocator;

Aliased Type§

struct FrameAllocatorImpl {
+FrameAllocatorImpl in os::mm::frame_allocator - Rust
+    
type FrameAllocatorImpl = StackFrameAllocator;

Aliased Type§

struct FrameAllocatorImpl {
     current: usize,
     end: usize,
-    recycled: Vec<usize, Global>,
-}

Fields§

§current: usize§end: usize§recycled: Vec<usize, Global>

Implementations§

Trait Implementations§

\ No newline at end of file + recycled: Vec<usize>, +}

Fields§

§current: usize§end: usize§recycled: Vec<usize>
\ No newline at end of file diff --git a/ch9/os/mm/heap_allocator/fn.handle_alloc_error.html b/ch9/os/mm/heap_allocator/fn.handle_alloc_error.html index 6053f3551..9217d594a 100644 --- a/ch9/os/mm/heap_allocator/fn.handle_alloc_error.html +++ b/ch9/os/mm/heap_allocator/fn.handle_alloc_error.html @@ -1 +1,2 @@ -handle_alloc_error in os::mm::heap_allocator - Rust
pub fn handle_alloc_error(layout: Layout) -> !
\ No newline at end of file +handle_alloc_error in os::mm::heap_allocator - Rust +
pub fn handle_alloc_error(layout: Layout) -> !
\ No newline at end of file diff --git a/ch9/os/mm/heap_allocator/fn.heap_test.html b/ch9/os/mm/heap_allocator/fn.heap_test.html index ec9c2d03e..d2a328b22 100644 --- a/ch9/os/mm/heap_allocator/fn.heap_test.html +++ b/ch9/os/mm/heap_allocator/fn.heap_test.html @@ -1 +1,2 @@ -heap_test in os::mm::heap_allocator - Rust

Function os::mm::heap_allocator::heap_test

source ·
pub fn heap_test()
\ No newline at end of file +heap_test in os::mm::heap_allocator - Rust +

Function os::mm::heap_allocator::heap_test

source ·
pub fn heap_test()
\ No newline at end of file diff --git a/ch9/os/mm/heap_allocator/fn.init_heap.html b/ch9/os/mm/heap_allocator/fn.init_heap.html index d7740cf38..8e3a97bae 100644 --- a/ch9/os/mm/heap_allocator/fn.init_heap.html +++ b/ch9/os/mm/heap_allocator/fn.init_heap.html @@ -1 +1,2 @@ -init_heap in os::mm::heap_allocator - Rust

Function os::mm::heap_allocator::init_heap

source ·
pub fn init_heap()
\ No newline at end of file +init_heap in os::mm::heap_allocator - Rust +

Function os::mm::heap_allocator::init_heap

source ·
pub fn init_heap()
\ No newline at end of file diff --git a/ch9/os/mm/heap_allocator/index.html b/ch9/os/mm/heap_allocator/index.html index b8e1ba6f7..598329924 100644 --- a/ch9/os/mm/heap_allocator/index.html +++ b/ch9/os/mm/heap_allocator/index.html @@ -1 +1,2 @@ -os::mm::heap_allocator - Rust
\ No newline at end of file +os::mm::heap_allocator - Rust +
\ No newline at end of file diff --git a/ch9/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html b/ch9/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html index 1116f8cfd..67b43ace6 100644 --- a/ch9/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html +++ b/ch9/os/mm/heap_allocator/static.HEAP_ALLOCATOR.html @@ -1 +1,2 @@ -HEAP_ALLOCATOR in os::mm::heap_allocator - Rust
static HEAP_ALLOCATOR: LockedHeap
\ No newline at end of file +HEAP_ALLOCATOR in os::mm::heap_allocator - Rust +
static HEAP_ALLOCATOR: LockedHeap
\ No newline at end of file diff --git a/ch9/os/mm/heap_allocator/static.HEAP_SPACE.html b/ch9/os/mm/heap_allocator/static.HEAP_SPACE.html index c1a68b6a3..49e18470f 100644 --- a/ch9/os/mm/heap_allocator/static.HEAP_SPACE.html +++ b/ch9/os/mm/heap_allocator/static.HEAP_SPACE.html @@ -1 +1,2 @@ -HEAP_SPACE in os::mm::heap_allocator - Rust
static mut HEAP_SPACE: [u8; 16777216]
\ No newline at end of file +HEAP_SPACE in os::mm::heap_allocator - Rust +
static mut HEAP_SPACE: [u8; 16777216]
\ No newline at end of file diff --git a/ch9/os/mm/index.html b/ch9/os/mm/index.html index 0ace7f79e..8c70f3a49 100644 --- a/ch9/os/mm/index.html +++ b/ch9/os/mm/index.html @@ -1 +1,2 @@ -os::mm - Rust

Module os::mm

source ·

Re-exports

Modules

Functions

\ No newline at end of file +os::mm - Rust +

Module os::mm

source ·

Re-exports

Modules

Functions

\ No newline at end of file diff --git a/ch9/os/mm/memory_set/enum.MapType.html b/ch9/os/mm/memory_set/enum.MapType.html index 8e8acfd70..b92c3120d 100644 --- a/ch9/os/mm/memory_set/enum.MapType.html +++ b/ch9/os/mm/memory_set/enum.MapType.html @@ -1,31 +1,32 @@ -MapType in os::mm::memory_set - Rust

Enum os::mm::memory_set::MapType

source ·
pub enum MapType {
+MapType in os::mm::memory_set - Rust
+    

Enum os::mm::memory_set::MapType

source ·
pub enum MapType {
     Identical,
     Framed,
     Linear(isize),
-}

Variants§

§

Identical

§

Framed

§

Linear(isize)

offset of page num

-

Trait Implementations§

source§

impl Clone for MapType

source§

fn clone(&self) -> MapType

Returns a copy 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 MapType

source§

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

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

impl PartialEq<MapType> for MapType

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for MapType

source§

impl StructuralPartialEq for MapType

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Variants§

§

Identical

§

Framed

§

Linear(isize)

offset of page num

+

Trait Implementations§

source§

impl Clone for MapType

source§

fn clone(&self) -> MapType

Returns a copy 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 MapType

source§

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

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

impl PartialEq for MapType

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Copy for MapType

source§

impl StructuralPartialEq for MapType

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.ebss.html b/ch9/os/mm/memory_set/fn.ebss.html index b9a5701a6..3a4166944 100644 --- a/ch9/os/mm/memory_set/fn.ebss.html +++ b/ch9/os/mm/memory_set/fn.ebss.html @@ -1 +1,2 @@ -ebss in os::mm::memory_set - Rust

Function os::mm::memory_set::ebss

source ·
unsafe extern "C" fn ebss()
\ No newline at end of file +ebss in os::mm::memory_set - Rust +

Function os::mm::memory_set::ebss

source ·
unsafe extern "C" fn ebss()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.edata.html b/ch9/os/mm/memory_set/fn.edata.html index 8b656a111..7c88ed231 100644 --- a/ch9/os/mm/memory_set/fn.edata.html +++ b/ch9/os/mm/memory_set/fn.edata.html @@ -1 +1,2 @@ -edata in os::mm::memory_set - Rust

Function os::mm::memory_set::edata

source ·
unsafe extern "C" fn edata()
\ No newline at end of file +edata in os::mm::memory_set - Rust +

Function os::mm::memory_set::edata

source ·
unsafe extern "C" fn edata()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.ekernel.html b/ch9/os/mm/memory_set/fn.ekernel.html index 253e97b77..98fb0f3bc 100644 --- a/ch9/os/mm/memory_set/fn.ekernel.html +++ b/ch9/os/mm/memory_set/fn.ekernel.html @@ -1 +1,2 @@ -ekernel in os::mm::memory_set - Rust

Function os::mm::memory_set::ekernel

source ·
unsafe extern "C" fn ekernel()
\ No newline at end of file +ekernel in os::mm::memory_set - Rust +

Function os::mm::memory_set::ekernel

source ·
unsafe extern "C" fn ekernel()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.erodata.html b/ch9/os/mm/memory_set/fn.erodata.html index a30e94814..ace70fbd3 100644 --- a/ch9/os/mm/memory_set/fn.erodata.html +++ b/ch9/os/mm/memory_set/fn.erodata.html @@ -1 +1,2 @@ -erodata in os::mm::memory_set - Rust

Function os::mm::memory_set::erodata

source ·
unsafe extern "C" fn erodata()
\ No newline at end of file +erodata in os::mm::memory_set - Rust +

Function os::mm::memory_set::erodata

source ·
unsafe extern "C" fn erodata()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.etext.html b/ch9/os/mm/memory_set/fn.etext.html index 168414914..8b07f6b12 100644 --- a/ch9/os/mm/memory_set/fn.etext.html +++ b/ch9/os/mm/memory_set/fn.etext.html @@ -1 +1,2 @@ -etext in os::mm::memory_set - Rust

Function os::mm::memory_set::etext

source ·
unsafe extern "C" fn etext()
\ No newline at end of file +etext in os::mm::memory_set - Rust +

Function os::mm::memory_set::etext

source ·
unsafe extern "C" fn etext()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.kernel_token.html b/ch9/os/mm/memory_set/fn.kernel_token.html index 66df038f0..f471ef55d 100644 --- a/ch9/os/mm/memory_set/fn.kernel_token.html +++ b/ch9/os/mm/memory_set/fn.kernel_token.html @@ -1 +1,2 @@ -kernel_token in os::mm::memory_set - Rust

Function os::mm::memory_set::kernel_token

source ·
pub fn kernel_token() -> usize
\ No newline at end of file +kernel_token in os::mm::memory_set - Rust +

Function os::mm::memory_set::kernel_token

source ·
pub fn kernel_token() -> usize
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.remap_test.html b/ch9/os/mm/memory_set/fn.remap_test.html index 93549ec9d..b3775d217 100644 --- a/ch9/os/mm/memory_set/fn.remap_test.html +++ b/ch9/os/mm/memory_set/fn.remap_test.html @@ -1 +1,2 @@ -remap_test in os::mm::memory_set - Rust

Function os::mm::memory_set::remap_test

source ·
pub fn remap_test()
\ No newline at end of file +remap_test in os::mm::memory_set - Rust +

Function os::mm::memory_set::remap_test

source ·
pub fn remap_test()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.sbss_with_stack.html b/ch9/os/mm/memory_set/fn.sbss_with_stack.html index 6619c594f..0b95afed9 100644 --- a/ch9/os/mm/memory_set/fn.sbss_with_stack.html +++ b/ch9/os/mm/memory_set/fn.sbss_with_stack.html @@ -1 +1,2 @@ -sbss_with_stack in os::mm::memory_set - Rust

Function os::mm::memory_set::sbss_with_stack

source ·
unsafe extern "C" fn sbss_with_stack()
\ No newline at end of file +sbss_with_stack in os::mm::memory_set - Rust +

Function os::mm::memory_set::sbss_with_stack

source ·
unsafe extern "C" fn sbss_with_stack()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.sdata.html b/ch9/os/mm/memory_set/fn.sdata.html index a851831a2..60a8c1c60 100644 --- a/ch9/os/mm/memory_set/fn.sdata.html +++ b/ch9/os/mm/memory_set/fn.sdata.html @@ -1 +1,2 @@ -sdata in os::mm::memory_set - Rust

Function os::mm::memory_set::sdata

source ·
unsafe extern "C" fn sdata()
\ No newline at end of file +sdata in os::mm::memory_set - Rust +

Function os::mm::memory_set::sdata

source ·
unsafe extern "C" fn sdata()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.srodata.html b/ch9/os/mm/memory_set/fn.srodata.html index 2e78fe305..a12d657f3 100644 --- a/ch9/os/mm/memory_set/fn.srodata.html +++ b/ch9/os/mm/memory_set/fn.srodata.html @@ -1 +1,2 @@ -srodata in os::mm::memory_set - Rust

Function os::mm::memory_set::srodata

source ·
unsafe extern "C" fn srodata()
\ No newline at end of file +srodata in os::mm::memory_set - Rust +

Function os::mm::memory_set::srodata

source ·
unsafe extern "C" fn srodata()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.stext.html b/ch9/os/mm/memory_set/fn.stext.html index 0b0577171..55e56b2e7 100644 --- a/ch9/os/mm/memory_set/fn.stext.html +++ b/ch9/os/mm/memory_set/fn.stext.html @@ -1 +1,2 @@ -stext in os::mm::memory_set - Rust

Function os::mm::memory_set::stext

source ·
unsafe extern "C" fn stext()
\ No newline at end of file +stext in os::mm::memory_set - Rust +

Function os::mm::memory_set::stext

source ·
unsafe extern "C" fn stext()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/fn.strampoline.html b/ch9/os/mm/memory_set/fn.strampoline.html index 4bbcc7993..914d44f52 100644 --- a/ch9/os/mm/memory_set/fn.strampoline.html +++ b/ch9/os/mm/memory_set/fn.strampoline.html @@ -1 +1,2 @@ -strampoline in os::mm::memory_set - Rust

Function os::mm::memory_set::strampoline

source ·
unsafe extern "C" fn strampoline()
\ No newline at end of file +strampoline in os::mm::memory_set - Rust +

Function os::mm::memory_set::strampoline

source ·
unsafe extern "C" fn strampoline()
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/index.html b/ch9/os/mm/memory_set/index.html index 7c0946c2d..650f015b4 100644 --- a/ch9/os/mm/memory_set/index.html +++ b/ch9/os/mm/memory_set/index.html @@ -1 +1,2 @@ -os::mm::memory_set - Rust
\ No newline at end of file +os::mm::memory_set - Rust +
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/struct.KERNEL_SPACE.html b/ch9/os/mm/memory_set/struct.KERNEL_SPACE.html index 3a8a6e681..f074ee202 100644 --- a/ch9/os/mm/memory_set/struct.KERNEL_SPACE.html +++ b/ch9/os/mm/memory_set/struct.KERNEL_SPACE.html @@ -1,25 +1,26 @@ -KERNEL_SPACE in os::mm::memory_set - Rust

Struct os::mm::memory_set::KERNEL_SPACE

source ·
pub struct KERNEL_SPACE {
+KERNEL_SPACE in os::mm::memory_set - Rust
+    

Struct os::mm::memory_set::KERNEL_SPACE

source ·
pub struct KERNEL_SPACE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for KERNEL_SPACE

§

type Target = Arc<UPIntrFreeCell<MemorySet>, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<UPIntrFreeCell<MemorySet>>

Dereferences the value.
source§

impl LazyStatic for KERNEL_SPACE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for KERNEL_SPACE

§

type Target = Arc<UPIntrFreeCell<MemorySet>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<UPIntrFreeCell<MemorySet>>

Dereferences the value.
source§

impl LazyStatic for KERNEL_SPACE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/struct.MapArea.html b/ch9/os/mm/memory_set/struct.MapArea.html index b372fa51c..fcbff6c17 100644 --- a/ch9/os/mm/memory_set/struct.MapArea.html +++ b/ch9/os/mm/memory_set/struct.MapArea.html @@ -1,35 +1,36 @@ -MapArea in os::mm::memory_set - Rust

Struct os::mm::memory_set::MapArea

source ·
pub struct MapArea {
+MapArea in os::mm::memory_set - Rust
+    

Struct os::mm::memory_set::MapArea

source ·
pub struct MapArea {
     vpn_range: SimpleRange<VirtPageNum>,
     data_frames: BTreeMap<VirtPageNum, FrameTracker>,
     map_type: MapType,
     map_perm: MapPermission,
-}

Fields§

§vpn_range: SimpleRange<VirtPageNum>§data_frames: BTreeMap<VirtPageNum, FrameTracker>§map_type: MapType§map_perm: MapPermission

Implementations§

source§

impl MapArea

source

pub fn new( +}

Fields§

§vpn_range: SimpleRange<VirtPageNum>§data_frames: BTreeMap<VirtPageNum, FrameTracker>§map_type: MapType§map_perm: MapPermission

Implementations§

source§

impl MapArea

source

pub fn new( start_va: VirtAddr, end_va: VirtAddr, map_type: MapType, map_perm: MapPermission ) -> Self

source

pub fn from_another(another: &MapArea) -> Self

source

pub fn map_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)

source

pub fn unmap_one(&mut self, page_table: &mut PageTable, vpn: VirtPageNum)

source

pub fn map(&mut self, page_table: &mut PageTable)

source

pub fn unmap(&mut self, page_table: &mut PageTable)

source

pub fn copy_data(&mut self, page_table: &mut PageTable, data: &[u8])

data: start-aligned but maybe with shorter length assume that all frames were cleared before

-

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/struct.MapPermission.html b/ch9/os/mm/memory_set/struct.MapPermission.html index 46fa2d59c..9de81dff6 100644 --- a/ch9/os/mm/memory_set/struct.MapPermission.html +++ b/ch9/os/mm/memory_set/struct.MapPermission.html @@ -1,6 +1,7 @@ -MapPermission in os::mm::memory_set - Rust

Struct os::mm::memory_set::MapPermission

source ·
pub struct MapPermission {
+MapPermission in os::mm::memory_set - Rust
+    

Struct os::mm::memory_set::MapPermission

source ·
pub struct MapPermission {
     bits: u8,
-}

Fields§

§bits: u8

Implementations§

source§

impl MapPermission

source

pub const R: Self = _

source

pub const W: Self = _

source

pub const X: Self = _

source

pub const U: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

+}

Fields§

§bits: u8

Implementations§

source§

impl MapPermission

source

pub const R: Self = _

source

pub const W: Self = _

source

pub const X: Self = _

source

pub const U: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u8

Returns the raw value of the flags currently stored.

source

pub const fn from_bits(bits: u8) -> Option<Self>

Convert from underlying bit representation, unless that @@ -58,45 +59,45 @@

Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

Trait Implementations§

source§

impl Binary for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<MapPermission> for MapPermission

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign<MapPermission> for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

-
source§

impl BitOr<MapPermission> for MapPermission

source§

fn bitor(self, other: MapPermission) -> Self

Returns the union of the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the | operator.
source§

impl BitOrAssign<MapPermission> for MapPermission

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

-
source§

impl BitXor<MapPermission> for MapPermission

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign<MapPermission> for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for MapPermission

source§

fn clone(&self) -> MapPermission

Returns a copy 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 MapPermission

source§

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

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

impl Extend<MapPermission> for MapPermission

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MapPermission> for MapPermission

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MapPermission

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Binary for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for MapPermission

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = MapPermission

The resulting type after applying the & operator.
source§

impl BitAndAssign for MapPermission

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl BitOr for MapPermission

source§

fn bitor(self, other: MapPermission) -> Self

Returns the union of the two sets of flags.

+
§

type Output = MapPermission

The resulting type after applying the | operator.
source§

impl BitOrAssign for MapPermission

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
source§

impl BitXor for MapPermission

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

+
§

type Output = MapPermission

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for MapPermission

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for MapPermission

source§

fn clone(&self) -> MapPermission

Returns a copy 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 MapPermission

source§

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

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

impl Extend<MapPermission> for MapPermission

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<MapPermission> for MapPermission

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for MapPermission

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

fn cmp(&self, other: &MapPermission) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<MapPermission> for MapPermission

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<MapPermission> for MapPermission

source§

fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Sub<MapPermission> for MapPermission

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign<MapPermission> for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralEq for MapPermission

source§

impl StructuralPartialEq for MapPermission

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Not for MapPermission

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = MapPermission

The resulting type after applying the ! operator.
source§

impl Octal for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Ord for MapPermission

source§

fn cmp(&self, other: &MapPermission) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for MapPermission

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for MapPermission

source§

fn partial_cmp(&self, other: &MapPermission) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Sub for MapPermission

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

+
§

type Output = MapPermission

The resulting type after applying the - operator.
source§

impl SubAssign for MapPermission

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for MapPermission

source§

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

Formats the value using the given formatter.
source§

impl Copy for MapPermission

source§

impl Eq for MapPermission

source§

impl StructuralEq for MapPermission

source§

impl StructuralPartialEq for MapPermission

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/memory_set/struct.MemorySet.html b/ch9/os/mm/memory_set/struct.MemorySet.html index 94241f5d0..f43e9b2ae 100644 --- a/ch9/os/mm/memory_set/struct.MemorySet.html +++ b/ch9/os/mm/memory_set/struct.MemorySet.html @@ -1,7 +1,8 @@ -MemorySet in os::mm::memory_set - Rust

Struct os::mm::memory_set::MemorySet

source ·
pub struct MemorySet {
+MemorySet in os::mm::memory_set - Rust
+    

Struct os::mm::memory_set::MemorySet

source ·
pub struct MemorySet {
     page_table: PageTable,
     areas: Vec<MapArea>,
-}

Fields§

§page_table: PageTable§areas: Vec<MapArea>

Implementations§

source§

impl MemorySet

source

pub fn new_bare() -> Self

source

pub fn token(&self) -> usize

source

pub fn insert_framed_area( +}

Fields§

§page_table: PageTable§areas: Vec<MapArea>

Implementations§

source§

impl MemorySet

source

pub fn new_bare() -> Self

source

pub fn token(&self) -> usize

source

pub fn insert_framed_area( &mut self, start_va: VirtAddr, end_va: VirtAddr, @@ -14,26 +15,26 @@

source

pub fn new_kernel() -> Self

Without kernel stacks.

source

pub fn from_elf(elf_data: &[u8]) -> (Self, usize, usize)

Include sections in elf and trampoline, also returns user_sp_base and entry point.

-
source

pub fn from_existed_user(user_space: &MemorySet) -> MemorySet

source

pub fn activate(&self)

source

pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry>

source

pub fn recycle_data_pages(&mut self)

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+
source

pub fn from_existed_user(user_space: &MemorySet) -> MemorySet

source

pub fn activate(&self)

source

pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry>

source

pub fn recycle_data_pages(&mut self)

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/page_table/fn.translated_byte_buffer.html b/ch9/os/mm/page_table/fn.translated_byte_buffer.html index 491b78534..fb2b4a885 100644 --- a/ch9/os/mm/page_table/fn.translated_byte_buffer.html +++ b/ch9/os/mm/page_table/fn.translated_byte_buffer.html @@ -1,4 +1,5 @@ -translated_byte_buffer in os::mm::page_table - Rust
pub fn translated_byte_buffer(
+translated_byte_buffer in os::mm::page_table - Rust
+    
pub fn translated_byte_buffer(
     token: usize,
     ptr: *const u8,
     len: usize
diff --git a/ch9/os/mm/page_table/fn.translated_ref.html b/ch9/os/mm/page_table/fn.translated_ref.html
index be0d59e19..abef18557 100644
--- a/ch9/os/mm/page_table/fn.translated_ref.html
+++ b/ch9/os/mm/page_table/fn.translated_ref.html
@@ -1 +1,2 @@
-translated_ref in os::mm::page_table - Rust

Function os::mm::page_table::translated_ref

source ·
pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T
\ No newline at end of file +translated_ref in os::mm::page_table - Rust +

Function os::mm::page_table::translated_ref

source ·
pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T
\ No newline at end of file diff --git a/ch9/os/mm/page_table/fn.translated_refmut.html b/ch9/os/mm/page_table/fn.translated_refmut.html index cab1f3788..bf3f21af3 100644 --- a/ch9/os/mm/page_table/fn.translated_refmut.html +++ b/ch9/os/mm/page_table/fn.translated_refmut.html @@ -1 +1,2 @@ -translated_refmut in os::mm::page_table - Rust
pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T
\ No newline at end of file +translated_refmut in os::mm::page_table - Rust +
pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T
\ No newline at end of file diff --git a/ch9/os/mm/page_table/fn.translated_str.html b/ch9/os/mm/page_table/fn.translated_str.html index f40bf9354..cff0a8756 100644 --- a/ch9/os/mm/page_table/fn.translated_str.html +++ b/ch9/os/mm/page_table/fn.translated_str.html @@ -1,2 +1,3 @@ -translated_str in os::mm::page_table - Rust

Function os::mm::page_table::translated_str

source ·
pub fn translated_str(token: usize, ptr: *const u8) -> String
Expand description

Load a string from other address spaces into kernel space without an end \0.

+translated_str in os::mm::page_table - Rust +

Function os::mm::page_table::translated_str

source ·
pub fn translated_str(token: usize, ptr: *const u8) -> String
Expand description

Load a string from other address spaces into kernel space without an end \0.

\ No newline at end of file diff --git a/ch9/os/mm/page_table/index.html b/ch9/os/mm/page_table/index.html index 52e4c6695..052bd6327 100644 --- a/ch9/os/mm/page_table/index.html +++ b/ch9/os/mm/page_table/index.html @@ -1 +1,2 @@ -os::mm::page_table - Rust
\ No newline at end of file +os::mm::page_table - Rust +
\ No newline at end of file diff --git a/ch9/os/mm/page_table/struct.PTEFlags.html b/ch9/os/mm/page_table/struct.PTEFlags.html index f4cd959ed..227b3b991 100644 --- a/ch9/os/mm/page_table/struct.PTEFlags.html +++ b/ch9/os/mm/page_table/struct.PTEFlags.html @@ -1,6 +1,7 @@ -PTEFlags in os::mm::page_table - Rust

Struct os::mm::page_table::PTEFlags

source ·
pub struct PTEFlags {
+PTEFlags in os::mm::page_table - Rust
+    

Struct os::mm::page_table::PTEFlags

source ·
pub struct PTEFlags {
     bits: u8,
-}

Fields§

§bits: u8

Implementations§

source§

impl PTEFlags

source

pub const V: Self = _

source

pub const R: Self = _

source

pub const W: Self = _

source

pub const X: Self = _

source

pub const U: Self = _

source

pub const G: Self = _

source

pub const A: Self = _

source

pub const D: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

+}

Fields§

§bits: u8

Implementations§

source§

impl PTEFlags

source

pub const V: Self = _

source

pub const R: Self = _

source

pub const W: Self = _

source

pub const X: Self = _

source

pub const U: Self = _

source

pub const G: Self = _

source

pub const A: Self = _

source

pub const D: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u8

Returns the raw value of the flags currently stored.

source

pub const fn from_bits(bits: u8) -> Option<Self>

Convert from underlying bit representation, unless that @@ -58,45 +59,45 @@

Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-

Trait Implementations§

source§

impl Binary for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<PTEFlags> for PTEFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = PTEFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign<PTEFlags> for PTEFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

-
source§

impl BitOr<PTEFlags> for PTEFlags

source§

fn bitor(self, other: PTEFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = PTEFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign<PTEFlags> for PTEFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

-
source§

impl BitXor<PTEFlags> for PTEFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = PTEFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign<PTEFlags> for PTEFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for PTEFlags

source§

fn clone(&self) -> PTEFlags

Returns a copy 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 PTEFlags

source§

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

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

impl Extend<PTEFlags> for PTEFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<PTEFlags> for PTEFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for PTEFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Binary for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for PTEFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = PTEFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for PTEFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl BitOr for PTEFlags

source§

fn bitor(self, other: PTEFlags) -> Self

Returns the union of the two sets of flags.

+
§

type Output = PTEFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for PTEFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
source§

impl BitXor for PTEFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

+
§

type Output = PTEFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for PTEFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for PTEFlags

source§

fn clone(&self) -> PTEFlags

Returns a copy 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 PTEFlags

source§

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

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

impl Extend<PTEFlags> for PTEFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<PTEFlags> for PTEFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for PTEFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for PTEFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = PTEFlags

The resulting type after applying the ! operator.
source§

impl Octal for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for PTEFlags

source§

fn cmp(&self, other: &PTEFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<PTEFlags> for PTEFlags

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<PTEFlags> for PTEFlags

source§

fn partial_cmp(&self, other: &PTEFlags) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Sub<PTEFlags> for PTEFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = PTEFlags

The resulting type after applying the - operator.
source§

impl SubAssign<PTEFlags> for PTEFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for PTEFlags

source§

impl Eq for PTEFlags

source§

impl StructuralEq for PTEFlags

source§

impl StructuralPartialEq for PTEFlags

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for PTEFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = PTEFlags

The resulting type after applying the ! operator.
source§

impl Octal for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for PTEFlags

source§

fn cmp(&self, other: &PTEFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for PTEFlags

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for PTEFlags

source§

fn partial_cmp(&self, other: &PTEFlags) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Sub for PTEFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

+
§

type Output = PTEFlags

The resulting type after applying the - operator.
source§

impl SubAssign for PTEFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for PTEFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for PTEFlags

source§

impl Eq for PTEFlags

source§

impl StructuralEq for PTEFlags

source§

impl StructuralPartialEq for PTEFlags

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/page_table/struct.PageTable.html b/ch9/os/mm/page_table/struct.PageTable.html index 9c9e7e6e8..bb74dd61c 100644 --- a/ch9/os/mm/page_table/struct.PageTable.html +++ b/ch9/os/mm/page_table/struct.PageTable.html @@ -1,28 +1,29 @@ -PageTable in os::mm::page_table - Rust

Struct os::mm::page_table::PageTable

source ·
pub struct PageTable {
+PageTable in os::mm::page_table - Rust
+    

Struct os::mm::page_table::PageTable

source ·
pub struct PageTable {
     root_ppn: PhysPageNum,
     frames: Vec<FrameTracker>,
-}

Fields§

§root_ppn: PhysPageNum§frames: Vec<FrameTracker>

Implementations§

source§

impl PageTable

Assume that it won’t oom when creating/mapping.

+}

Fields§

§root_ppn: PhysPageNum§frames: Vec<FrameTracker>

Implementations§

source§

impl PageTable

Assume that it won’t oom when creating/mapping.

source

pub fn new() -> Self

source

pub fn from_token(satp: usize) -> Self

Temporarily used to get arguments from user space.

-
source

fn find_pte_create(&mut self, vpn: VirtPageNum) -> Option<&mut PageTableEntry>

source

fn find_pte(&self, vpn: VirtPageNum) -> Option<&mut PageTableEntry>

source

pub fn map(&mut self, vpn: VirtPageNum, ppn: PhysPageNum, flags: PTEFlags)

source

pub fn unmap(&mut self, vpn: VirtPageNum)

source

pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry>

source

pub fn translate_va(&self, va: VirtAddr) -> Option<PhysAddr>

source

pub fn token(&self) -> usize

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+
source

fn find_pte_create(&mut self, vpn: VirtPageNum) -> Option<&mut PageTableEntry>

source

fn find_pte(&self, vpn: VirtPageNum) -> Option<&mut PageTableEntry>

source

pub fn map(&mut self, vpn: VirtPageNum, ppn: PhysPageNum, flags: PTEFlags)

source

pub fn unmap(&mut self, vpn: VirtPageNum)

source

pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry>

source

pub fn translate_va(&self, va: VirtAddr) -> Option<PhysAddr>

source

pub fn token(&self) -> usize

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/page_table/struct.PageTableEntry.html b/ch9/os/mm/page_table/struct.PageTableEntry.html index 8a31c71c5..772d99739 100644 --- a/ch9/os/mm/page_table/struct.PageTableEntry.html +++ b/ch9/os/mm/page_table/struct.PageTableEntry.html @@ -1,26 +1,27 @@ -PageTableEntry in os::mm::page_table - Rust
#[repr(C)]
pub struct PageTableEntry { +PageTableEntry in os::mm::page_table - Rust +
#[repr(C)]
pub struct PageTableEntry { pub bits: usize, -}

Fields§

§bits: usize

Implementations§

source§

impl PageTableEntry

source

pub fn new(ppn: PhysPageNum, flags: PTEFlags) -> Self

source

pub fn empty() -> Self

source

pub fn ppn(&self) -> PhysPageNum

source

pub fn flags(&self) -> PTEFlags

source

pub fn is_valid(&self) -> bool

source

pub fn readable(&self) -> bool

source

pub fn writable(&self) -> bool

source

pub fn executable(&self) -> bool

Trait Implementations§

source§

impl Clone for PageTableEntry

source§

fn clone(&self) -> PageTableEntry

Returns a copy 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 Copy for PageTableEntry

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§bits: usize

Implementations§

source§

impl PageTableEntry

source

pub fn new(ppn: PhysPageNum, flags: PTEFlags) -> Self

source

pub fn empty() -> Self

source

pub fn ppn(&self) -> PhysPageNum

source

pub fn flags(&self) -> PTEFlags

source

pub fn is_valid(&self) -> bool

source

pub fn readable(&self) -> bool

source

pub fn writable(&self) -> bool

source

pub fn executable(&self) -> bool

Trait Implementations§

source§

impl Clone for PageTableEntry

source§

fn clone(&self) -> PageTableEntry

Returns a copy 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 Copy for PageTableEntry

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/page_table/struct.UserBuffer.html b/ch9/os/mm/page_table/struct.UserBuffer.html index 89a2ce30a..9a8f7e524 100644 --- a/ch9/os/mm/page_table/struct.UserBuffer.html +++ b/ch9/os/mm/page_table/struct.UserBuffer.html @@ -1,25 +1,26 @@ -UserBuffer in os::mm::page_table - Rust

Struct os::mm::page_table::UserBuffer

source ·
pub struct UserBuffer {
+UserBuffer in os::mm::page_table - Rust
+    

Struct os::mm::page_table::UserBuffer

source ·
pub struct UserBuffer {
     pub buffers: Vec<&'static mut [u8]>,
-}

Fields§

§buffers: Vec<&'static mut [u8]>

Implementations§

source§

impl UserBuffer

source

pub fn new(buffers: Vec<&'static mut [u8]>) -> Self

source

pub fn len(&self) -> usize

Trait Implementations§

source§

impl IntoIterator for UserBuffer

§

type Item = *mut u8

The type of the elements being iterated over.
§

type IntoIter = UserBufferIterator

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§buffers: Vec<&'static mut [u8]>

Implementations§

source§

impl UserBuffer

source

pub fn new(buffers: Vec<&'static mut [u8]>) -> Self

source

pub fn len(&self) -> usize

Trait Implementations§

source§

impl IntoIterator for UserBuffer

§

type Item = *mut u8

The type of the elements being iterated over.
§

type IntoIter = UserBufferIterator

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/mm/page_table/struct.UserBufferIterator.html b/ch9/os/mm/page_table/struct.UserBufferIterator.html index 1fc6863fc..211df4e5e 100644 --- a/ch9/os/mm/page_table/struct.UserBufferIterator.html +++ b/ch9/os/mm/page_table/struct.UserBufferIterator.html @@ -1,218 +1,219 @@ -UserBufferIterator in os::mm::page_table - Rust
pub struct UserBufferIterator {
+UserBufferIterator in os::mm::page_table - Rust
+    
pub struct UserBufferIterator {
     buffers: Vec<&'static mut [u8]>,
     current_buffer: usize,
     current_idx: usize,
-}

Fields§

§buffers: Vec<&'static mut [u8]>§current_buffer: usize§current_idx: usize

Trait Implementations§

source§

impl Iterator for UserBufferIterator

§

type Item = *mut u8

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( +}

Fields§

§buffers: Vec<&'static mut [u8]>§current_buffer: usize§current_idx: usize

Trait Implementations§

source§

impl Iterator for UserBufferIterator

§

type Item = *mut u8

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usizewhere - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse(self, separator: Self::Item) -> Intersperse<Self>where + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
where Self: Sized, - Self::Item: Clone,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places a copy of separator between adjacent -items of the original iterator. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where + Self::Item: Clone,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places a copy of separator between adjacent +items of the original iterator. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>where + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)where + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>where + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods + F: FnMut(Self::Item) -> Option<B>,
Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where Self: Sized, U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>where + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over + F: FnMut(&[Self::Item; N]) -> R,
🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>where +the windows during mapping overlap as well. Read more

1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Selfwhere - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> Bwhere + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where Self: Sized, B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> boolwhere + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where Self: Sized, F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> Rwhere + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where Self: Sized, F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> Bwhere + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>where + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<F, R>( + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where Self: Sized, F: FnMut(Self::Item, Self::Item) -> R, R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> boolwhere + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> boolwhere + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>where + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<F, R>( + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where Self: Sized, F: FnMut(&Self::Item) -> R, R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>where + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.0.0 · source§

fn max(self) -> Option<Self::Item>where + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.0.0 · source§

fn max(self) -> Option<Self::Item>
where Self: Sized, - Self::Item: Ord,

Returns the maximum element of an iterator. Read more
1.0.0 · source§

fn min(self) -> Option<Self::Item>where + Self::Item: Ord,

Returns the maximum element of an iterator. Read more
1.0.0 · source§

fn min(self) -> Option<Self::Item>
where Self: Sized, - Self::Item: Ord,

Returns the minimum element of an iterator. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where + Self::Item: Ord,

Returns the minimum element of an iterator. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>where + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>where + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where FromA: Default + Extend<A>, FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>where + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>where + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> Swhere + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> Pwhere + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
1.5.0 · source§

fn cmp<I>(self, other: I) -> Orderingwhere + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
1.5.0 · source§

fn cmp<I>(self, other: I) -> Ordering
where I: IntoIterator<Item = Self::Item>, Self::Item: Ord, - Self: Sized,

Lexicographically compares the elements of this Iterator with those -of another. Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere + Self: Sized,

Lexicographically compares the elements of this Iterator with those +of another. Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where Self: Sized, I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>where + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of + Self: Sized,
Lexicographically compares the PartialOrd elements of this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where +As soon as an order can be determined, the evaluation stops and a result is returned. Read more

source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where Self: Sized, I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> boolwhere + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where Self: Sized, I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> boolwhere + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
source§

fn is_sorted(self) -> boolwhere + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted(self) -> bool
where Self: Sized, - Self::Item: PartialOrd<Self::Item>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> boolwhere + Self::Item: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere + F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> K, - K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ K: PartialOrd,
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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<I> IntoIterator for Iwhere - I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/fn.hexdump.html b/ch9/os/net/fn.hexdump.html index 1fda84b58..d04fa6dd3 100644 --- a/ch9/os/net/fn.hexdump.html +++ b/ch9/os/net/fn.hexdump.html @@ -1 +1,2 @@ -hexdump in os::net - Rust

Function os::net::hexdump

source ·
pub fn hexdump(data: &[u8])
\ No newline at end of file +hexdump in os::net - Rust +

Function os::net::hexdump

source ·
pub fn hexdump(data: &[u8])
\ No newline at end of file diff --git a/ch9/os/net/fn.net_interrupt_handler.html b/ch9/os/net/fn.net_interrupt_handler.html index 7ba56230b..c76ad28a2 100644 --- a/ch9/os/net/fn.net_interrupt_handler.html +++ b/ch9/os/net/fn.net_interrupt_handler.html @@ -1 +1,2 @@ -net_interrupt_handler in os::net - Rust

Function os::net::net_interrupt_handler

source ·
pub fn net_interrupt_handler()
\ No newline at end of file +net_interrupt_handler in os::net - Rust +

Function os::net::net_interrupt_handler

source ·
pub fn net_interrupt_handler()
\ No newline at end of file diff --git a/ch9/os/net/index.html b/ch9/os/net/index.html index c5a90ad3a..b1ea31b16 100644 --- a/ch9/os/net/index.html +++ b/ch9/os/net/index.html @@ -1 +1,2 @@ -os::net - Rust
\ No newline at end of file +os::net - Rust +
\ No newline at end of file diff --git a/ch9/os/net/port_table/fn.accept.html b/ch9/os/net/port_table/fn.accept.html index e9353625b..73b46a749 100644 --- a/ch9/os/net/port_table/fn.accept.html +++ b/ch9/os/net/port_table/fn.accept.html @@ -1 +1,2 @@ -accept in os::net::port_table - Rust

Function os::net::port_table::accept

source ·
pub fn accept(listen_index: usize, task: Arc<TaskControlBlock>)
\ No newline at end of file +accept in os::net::port_table - Rust +

Function os::net::port_table::accept

source ·
pub fn accept(listen_index: usize, task: Arc<TaskControlBlock>)
\ No newline at end of file diff --git a/ch9/os/net/port_table/fn.accept_connection.html b/ch9/os/net/port_table/fn.accept_connection.html index 5e2fcbbda..c205c7aa8 100644 --- a/ch9/os/net/port_table/fn.accept_connection.html +++ b/ch9/os/net/port_table/fn.accept_connection.html @@ -1,4 +1,5 @@ -accept_connection in os::net::port_table - Rust
pub fn accept_connection(
+accept_connection in os::net::port_table - Rust
+    
pub fn accept_connection(
     _port: u16,
     tcp_packet: &TCPPacket<'_>,
     task: Arc<TaskControlBlock>
diff --git a/ch9/os/net/port_table/fn.check_accept.html b/ch9/os/net/port_table/fn.check_accept.html
index cccb7a97a..0765e5139 100644
--- a/ch9/os/net/port_table/fn.check_accept.html
+++ b/ch9/os/net/port_table/fn.check_accept.html
@@ -1 +1,2 @@
-check_accept in os::net::port_table - Rust

Function os::net::port_table::check_accept

source ·
pub fn check_accept(port: u16, tcp_packet: &TCPPacket<'_>) -> Option<()>
\ No newline at end of file +check_accept in os::net::port_table - Rust +

Function os::net::port_table::check_accept

source ·
pub fn check_accept(port: u16, tcp_packet: &TCPPacket<'_>) -> Option<()>
\ No newline at end of file diff --git a/ch9/os/net/port_table/fn.listen.html b/ch9/os/net/port_table/fn.listen.html index f2789412a..30c23bac0 100644 --- a/ch9/os/net/port_table/fn.listen.html +++ b/ch9/os/net/port_table/fn.listen.html @@ -1 +1,2 @@ -listen in os::net::port_table - Rust

Function os::net::port_table::listen

source ·
pub fn listen(port: u16) -> Option<usize>
\ No newline at end of file +listen in os::net::port_table - Rust +

Function os::net::port_table::listen

source ·
pub fn listen(port: u16) -> Option<usize>
\ No newline at end of file diff --git a/ch9/os/net/port_table/fn.port_acceptable.html b/ch9/os/net/port_table/fn.port_acceptable.html index 8399d1221..d03333daa 100644 --- a/ch9/os/net/port_table/fn.port_acceptable.html +++ b/ch9/os/net/port_table/fn.port_acceptable.html @@ -1 +1,2 @@ -port_acceptable in os::net::port_table - Rust

Function os::net::port_table::port_acceptable

source ·
pub fn port_acceptable(listen_index: usize) -> bool
\ No newline at end of file +port_acceptable in os::net::port_table - Rust +

Function os::net::port_table::port_acceptable

source ·
pub fn port_acceptable(listen_index: usize) -> bool
\ No newline at end of file diff --git a/ch9/os/net/port_table/index.html b/ch9/os/net/port_table/index.html index c998cc6ae..31208610b 100644 --- a/ch9/os/net/port_table/index.html +++ b/ch9/os/net/port_table/index.html @@ -1 +1,2 @@ -os::net::port_table - Rust
\ No newline at end of file +os::net::port_table - Rust +
\ No newline at end of file diff --git a/ch9/os/net/port_table/struct.LISTEN_TABLE.html b/ch9/os/net/port_table/struct.LISTEN_TABLE.html index 87e1af6d3..a0c430cd5 100644 --- a/ch9/os/net/port_table/struct.LISTEN_TABLE.html +++ b/ch9/os/net/port_table/struct.LISTEN_TABLE.html @@ -1,27 +1,28 @@ -LISTEN_TABLE in os::net::port_table - Rust

Struct os::net::port_table::LISTEN_TABLE

source ·
struct LISTEN_TABLE {
+LISTEN_TABLE in os::net::port_table - Rust
+    

Struct os::net::port_table::LISTEN_TABLE

source ·
struct LISTEN_TABLE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<Option<Port>>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for LISTEN_TABLE

§

type Target = UPIntrFreeCell<Vec<Option<Port>, Global>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Vec<Option<Port>>>

Dereferences the value.
source§

impl LazyStatic for LISTEN_TABLE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<Option<Port>>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for LISTEN_TABLE

§

type Target = UPIntrFreeCell<Vec<Option<Port>>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Vec<Option<Port>>>

Dereferences the value.
source§

impl LazyStatic for LISTEN_TABLE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/port_table/struct.Port.html b/ch9/os/net/port_table/struct.Port.html index 8e981320d..dd8dc4724 100644 --- a/ch9/os/net/port_table/struct.Port.html +++ b/ch9/os/net/port_table/struct.Port.html @@ -1,27 +1,28 @@ -Port in os::net::port_table - Rust

Struct os::net::port_table::Port

source ·
pub struct Port {
+Port in os::net::port_table - Rust
+    

Struct os::net::port_table::Port

source ·
pub struct Port {
     pub port: u16,
     pub receivable: bool,
     pub schedule: Option<Arc<TaskControlBlock>>,
-}

Fields§

§port: u16§receivable: bool§schedule: Option<Arc<TaskControlBlock>>

Auto Trait Implementations§

§

impl !RefUnwindSafe for Port

§

impl Send for Port

§

impl Sync for Port

§

impl Unpin for Port

§

impl !UnwindSafe for Port

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§port: u16§receivable: bool§schedule: Option<Arc<TaskControlBlock>>

Auto Trait Implementations§

§

impl !RefUnwindSafe for Port

§

impl Send for Port

§

impl Sync for Port

§

impl Unpin for Port

§

impl !UnwindSafe for Port

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/port_table/struct.PortFd.html b/ch9/os/net/port_table/struct.PortFd.html index 7f455b03b..d1f16cca1 100644 --- a/ch9/os/net/port_table/struct.PortFd.html +++ b/ch9/os/net/port_table/struct.PortFd.html @@ -1,23 +1,24 @@ -PortFd in os::net::port_table - Rust

Struct os::net::port_table::PortFd

source ·
pub struct PortFd(usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl PortFd

source

pub fn new(port_index: usize) -> Self

Trait Implementations§

source§

impl Drop for PortFd

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl File for PortFd

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, _buf: UserBuffer) -> usize

source§

fn write(&self, _buf: UserBuffer) -> usize

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+PortFd in os::net::port_table - Rust +

Struct os::net::port_table::PortFd

source ·
pub struct PortFd(usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl PortFd

source

pub fn new(port_index: usize) -> Self

Trait Implementations§

source§

impl Drop for PortFd

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl File for PortFd

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, _buf: UserBuffer) -> usize

source§

fn write(&self, _buf: UserBuffer) -> usize

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/socket/fn.add_socket.html b/ch9/os/net/socket/fn.add_socket.html index 09d57a651..d416719de 100644 --- a/ch9/os/net/socket/fn.add_socket.html +++ b/ch9/os/net/socket/fn.add_socket.html @@ -1 +1,2 @@ -add_socket in os::net::socket - Rust

Function os::net::socket::add_socket

source ·
pub fn add_socket(raddr: IPv4, lport: u16, rport: u16) -> Option<usize>
\ No newline at end of file +add_socket in os::net::socket - Rust +

Function os::net::socket::add_socket

source ·
pub fn add_socket(raddr: IPv4, lport: u16, rport: u16) -> Option<usize>
\ No newline at end of file diff --git a/ch9/os/net/socket/fn.get_s_a_by_index.html b/ch9/os/net/socket/fn.get_s_a_by_index.html index 8f5c8477b..5753f1668 100644 --- a/ch9/os/net/socket/fn.get_s_a_by_index.html +++ b/ch9/os/net/socket/fn.get_s_a_by_index.html @@ -1,2 +1,3 @@ -get_s_a_by_index in os::net::socket - Rust

Function os::net::socket::get_s_a_by_index

source ·
pub fn get_s_a_by_index(index: usize) -> Option<(u32, u32)>
Expand description

get the seq and ack by socket index

+get_s_a_by_index in os::net::socket - Rust +

Function os::net::socket::get_s_a_by_index

source ·
pub fn get_s_a_by_index(index: usize) -> Option<(u32, u32)>
Expand description

get the seq and ack by socket index

\ No newline at end of file diff --git a/ch9/os/net/socket/fn.get_socket.html b/ch9/os/net/socket/fn.get_socket.html index efb4c565c..2f74f1c17 100644 --- a/ch9/os/net/socket/fn.get_socket.html +++ b/ch9/os/net/socket/fn.get_socket.html @@ -1 +1,2 @@ -get_socket in os::net::socket - Rust

Function os::net::socket::get_socket

source ·
pub fn get_socket(raddr: IPv4, lport: u16, rport: u16) -> Option<usize>
\ No newline at end of file +get_socket in os::net::socket - Rust +

Function os::net::socket::get_socket

source ·
pub fn get_socket(raddr: IPv4, lport: u16, rport: u16) -> Option<usize>
\ No newline at end of file diff --git a/ch9/os/net/socket/fn.pop_data.html b/ch9/os/net/socket/fn.pop_data.html index 00dba50ae..6cef68b07 100644 --- a/ch9/os/net/socket/fn.pop_data.html +++ b/ch9/os/net/socket/fn.pop_data.html @@ -1 +1,2 @@ -pop_data in os::net::socket - Rust

Function os::net::socket::pop_data

source ·
pub fn pop_data(index: usize) -> Option<Vec<u8>>
\ No newline at end of file +pop_data in os::net::socket - Rust +

Function os::net::socket::pop_data

source ·
pub fn pop_data(index: usize) -> Option<Vec<u8>>
\ No newline at end of file diff --git a/ch9/os/net/socket/fn.push_data.html b/ch9/os/net/socket/fn.push_data.html index b9908c3c7..d0d2f6253 100644 --- a/ch9/os/net/socket/fn.push_data.html +++ b/ch9/os/net/socket/fn.push_data.html @@ -1 +1,2 @@ -push_data in os::net::socket - Rust

Function os::net::socket::push_data

source ·
pub fn push_data(index: usize, data: Vec<u8>)
\ No newline at end of file +push_data in os::net::socket - Rust +

Function os::net::socket::push_data

source ·
pub fn push_data(index: usize, data: Vec<u8>)
\ No newline at end of file diff --git a/ch9/os/net/socket/fn.remove_socket.html b/ch9/os/net/socket/fn.remove_socket.html index 0c9f5193a..def2a18e4 100644 --- a/ch9/os/net/socket/fn.remove_socket.html +++ b/ch9/os/net/socket/fn.remove_socket.html @@ -1 +1,2 @@ -remove_socket in os::net::socket - Rust

Function os::net::socket::remove_socket

source ·
pub fn remove_socket(index: usize)
\ No newline at end of file +remove_socket in os::net::socket - Rust +

Function os::net::socket::remove_socket

source ·
pub fn remove_socket(index: usize)
\ No newline at end of file diff --git a/ch9/os/net/socket/fn.set_s_a_by_index.html b/ch9/os/net/socket/fn.set_s_a_by_index.html index 276560ce6..f59f023fe 100644 --- a/ch9/os/net/socket/fn.set_s_a_by_index.html +++ b/ch9/os/net/socket/fn.set_s_a_by_index.html @@ -1 +1,2 @@ -set_s_a_by_index in os::net::socket - Rust

Function os::net::socket::set_s_a_by_index

source ·
pub fn set_s_a_by_index(index: usize, seq: u32, ack: u32)
\ No newline at end of file +set_s_a_by_index in os::net::socket - Rust +

Function os::net::socket::set_s_a_by_index

source ·
pub fn set_s_a_by_index(index: usize, seq: u32, ack: u32)
\ No newline at end of file diff --git a/ch9/os/net/socket/index.html b/ch9/os/net/socket/index.html index 5314e218b..a09997440 100644 --- a/ch9/os/net/socket/index.html +++ b/ch9/os/net/socket/index.html @@ -1 +1,2 @@ -os::net::socket - Rust
\ No newline at end of file +os::net::socket - Rust +
\ No newline at end of file diff --git a/ch9/os/net/socket/struct.SOCKET_TABLE.html b/ch9/os/net/socket/struct.SOCKET_TABLE.html index 3a03c3a75..f262b579e 100644 --- a/ch9/os/net/socket/struct.SOCKET_TABLE.html +++ b/ch9/os/net/socket/struct.SOCKET_TABLE.html @@ -1,27 +1,28 @@ -SOCKET_TABLE in os::net::socket - Rust

Struct os::net::socket::SOCKET_TABLE

source ·
struct SOCKET_TABLE {
+SOCKET_TABLE in os::net::socket - Rust
+    

Struct os::net::socket::SOCKET_TABLE

source ·
struct SOCKET_TABLE {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<Option<Socket>>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for SOCKET_TABLE

§

type Target = UPIntrFreeCell<Vec<Option<Socket>, Global>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Vec<Option<Socket>>>

Dereferences the value.
source§

impl LazyStatic for SOCKET_TABLE

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Vec<Option<Socket>>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for SOCKET_TABLE

§

type Target = UPIntrFreeCell<Vec<Option<Socket>>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Vec<Option<Socket>>>

Dereferences the value.
source§

impl LazyStatic for SOCKET_TABLE

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/socket/struct.Socket.html b/ch9/os/net/socket/struct.Socket.html index 90cb4cfa3..735e5b46f 100644 --- a/ch9/os/net/socket/struct.Socket.html +++ b/ch9/os/net/socket/struct.Socket.html @@ -1,30 +1,31 @@ -Socket in os::net::socket - Rust

Struct os::net::socket::Socket

source ·
pub struct Socket {
+Socket in os::net::socket - Rust
+    

Struct os::net::socket::Socket

source ·
pub struct Socket {
     pub raddr: IPv4,
     pub lport: u16,
     pub rport: u16,
     pub buffers: VecDeque<Vec<u8>>,
     pub seq: u32,
     pub ack: u32,
-}

Fields§

§raddr: IPv4§lport: u16§rport: u16§buffers: VecDeque<Vec<u8>>§seq: u32§ack: u32

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§raddr: IPv4§lport: u16§rport: u16§buffers: VecDeque<Vec<u8>>§seq: u32§ack: u32

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/struct.IPv4.html b/ch9/os/net/struct.IPv4.html index bc59727ae..d5ed7a15e 100644 --- a/ch9/os/net/struct.IPv4.html +++ b/ch9/os/net/struct.IPv4.html @@ -1,27 +1,28 @@ -IPv4 in os::net - Rust

Struct os::net::IPv4

pub struct IPv4(u32);

Tuple Fields§

§0: u32

Implementations§

§

impl IPv4

pub fn new(a1: u8, a2: u8, a3: u8, a4: u8) -> IPv4

pub fn from_u32(ip: u32) -> IPv4

pub fn to_string(&self) -> String

pub fn to_u32(&self) -> u32

Trait Implementations§

§

impl Clone for IPv4

§

fn clone(&self) -> IPv4

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
§

impl Debug for IPv4

§

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

Formats the value using the given formatter. Read more
§

impl Display for IPv4

§

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

Formats the value using the given formatter. Read more
§

impl PartialEq<IPv4> for IPv4

§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
§

impl Copy for IPv4

§

impl Eq for IPv4

§

impl StructuralEq for IPv4

§

impl StructuralPartialEq for IPv4

Auto Trait Implementations§

§

impl RefUnwindSafe for IPv4

§

impl Send for IPv4

§

impl Sync for IPv4

§

impl Unpin for IPv4

§

impl UnwindSafe for IPv4

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+IPv4 in os::net - Rust +

Struct os::net::IPv4

pub struct IPv4(u32);

Tuple Fields§

§0: u32

Implementations§

§

impl IPv4

pub fn new(a1: u8, a2: u8, a3: u8, a4: u8) -> IPv4

pub fn from_u32(ip: u32) -> IPv4

pub fn to_string(&self) -> String

pub fn to_u32(&self) -> u32

Trait Implementations§

§

impl Clone for IPv4

§

fn clone(&self) -> IPv4

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
§

impl Debug for IPv4

§

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

Formats the value using the given formatter. Read more
§

impl Display for IPv4

§

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

Formats the value using the given formatter. Read more
§

impl PartialEq for IPv4

§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
§

impl Copy for IPv4

§

impl Eq for IPv4

§

impl StructuralEq for IPv4

§

impl StructuralPartialEq for IPv4

Auto Trait Implementations§

§

impl RefUnwindSafe for IPv4

§

impl Send for IPv4

§

impl Sync for IPv4

§

impl Unpin for IPv4

§

impl UnwindSafe for IPv4

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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> ToString for Twhere - T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/struct.LOSE_NET_STACK.html b/ch9/os/net/struct.LOSE_NET_STACK.html index d785167a8..4012f4a30 100644 --- a/ch9/os/net/struct.LOSE_NET_STACK.html +++ b/ch9/os/net/struct.LOSE_NET_STACK.html @@ -1,25 +1,26 @@ -LOSE_NET_STACK in os::net - Rust

Struct os::net::LOSE_NET_STACK

source ·
struct LOSE_NET_STACK {
+LOSE_NET_STACK in os::net - Rust
+    

Struct os::net::LOSE_NET_STACK

source ·
struct LOSE_NET_STACK {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for LOSE_NET_STACK

§

type Target = Arc<NetStack, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<NetStack>

Dereferences the value.
source§

impl LazyStatic for LOSE_NET_STACK

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for LOSE_NET_STACK

§

type Target = Arc<NetStack>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<NetStack>

Dereferences the value.
source§

impl LazyStatic for LOSE_NET_STACK

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/struct.NetStack.html b/ch9/os/net/struct.NetStack.html index c2464727e..242bc93e3 100644 --- a/ch9/os/net/struct.NetStack.html +++ b/ch9/os/net/struct.NetStack.html @@ -1,23 +1,24 @@ -NetStack in os::net - Rust

Struct os::net::NetStack

source ·
pub struct NetStack(UPIntrFreeCell<LoseStack>);

Tuple Fields§

§0: UPIntrFreeCell<LoseStack>

Implementations§

source§

impl NetStack

source

pub fn new() -> Self

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+NetStack in os::net - Rust +

Struct os::net::NetStack

source ·
pub struct NetStack(UPIntrFreeCell<LoseStack>);

Tuple Fields§

§0: UPIntrFreeCell<LoseStack>

Implementations§

source§

impl NetStack

source

pub fn new() -> Self

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/tcp/index.html b/ch9/os/net/tcp/index.html index 81b51c783..527a5f76f 100644 --- a/ch9/os/net/tcp/index.html +++ b/ch9/os/net/tcp/index.html @@ -1 +1,2 @@ -os::net::tcp - Rust

Module os::net::tcp

source ·

Structs

\ No newline at end of file +os::net::tcp - Rust +

Module os::net::tcp

source ·

Structs

\ No newline at end of file diff --git a/ch9/os/net/tcp/struct.TCP.html b/ch9/os/net/tcp/struct.TCP.html index 03b469f54..e3fa25f50 100644 --- a/ch9/os/net/tcp/struct.TCP.html +++ b/ch9/os/net/tcp/struct.TCP.html @@ -1,30 +1,31 @@ -TCP in os::net::tcp - Rust

Struct os::net::tcp::TCP

source ·
pub struct TCP {
+TCP in os::net::tcp - Rust
+    

Struct os::net::tcp::TCP

source ·
pub struct TCP {
     pub target: IPv4,
     pub sport: u16,
     pub dport: u16,
     pub seq: u32,
     pub ack: u32,
     pub socket_index: usize,
-}

Fields§

§target: IPv4§sport: u16§dport: u16§seq: u32§ack: u32§socket_index: usize

Implementations§

source§

impl TCP

source

pub fn new(target: IPv4, sport: u16, dport: u16, seq: u32, ack: u32) -> Self

Trait Implementations§

source§

impl Drop for TCP

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl File for TCP

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl RefUnwindSafe for TCP

§

impl Send for TCP

§

impl Sync for TCP

§

impl Unpin for TCP

§

impl UnwindSafe for TCP

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§target: IPv4§sport: u16§dport: u16§seq: u32§ack: u32§socket_index: usize

Implementations§

source§

impl TCP

source

pub fn new(target: IPv4, sport: u16, dport: u16, seq: u32, ack: u32) -> Self

Trait Implementations§

source§

impl Drop for TCP

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl File for TCP

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl RefUnwindSafe for TCP

§

impl Send for TCP

§

impl Sync for TCP

§

impl Unpin for TCP

§

impl UnwindSafe for TCP

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/net/udp/index.html b/ch9/os/net/udp/index.html index 2382a798c..5ac1612ca 100644 --- a/ch9/os/net/udp/index.html +++ b/ch9/os/net/udp/index.html @@ -1 +1,2 @@ -os::net::udp - Rust

Module os::net::udp

source ·

Structs

\ No newline at end of file +os::net::udp - Rust +

Module os::net::udp

source ·

Structs

\ No newline at end of file diff --git a/ch9/os/net/udp/struct.UDP.html b/ch9/os/net/udp/struct.UDP.html index 2f89d840f..b063ef396 100644 --- a/ch9/os/net/udp/struct.UDP.html +++ b/ch9/os/net/udp/struct.UDP.html @@ -1,28 +1,29 @@ -UDP in os::net::udp - Rust

Struct os::net::udp::UDP

source ·
pub struct UDP {
+UDP in os::net::udp - Rust
+    

Struct os::net::udp::UDP

source ·
pub struct UDP {
     pub target: IPv4,
     pub sport: u16,
     pub dport: u16,
     pub socket_index: usize,
-}

Fields§

§target: IPv4§sport: u16§dport: u16§socket_index: usize

Implementations§

source§

impl UDP

source

pub fn new(target: IPv4, sport: u16, dport: u16) -> Self

Trait Implementations§

source§

impl Drop for UDP

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl File for UDP

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl RefUnwindSafe for UDP

§

impl Send for UDP

§

impl Sync for UDP

§

impl Unpin for UDP

§

impl UnwindSafe for UDP

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§target: IPv4§sport: u16§dport: u16§socket_index: usize

Implementations§

source§

impl UDP

source

pub fn new(target: IPv4, sport: u16, dport: u16) -> Self

Trait Implementations§

source§

impl Drop for UDP

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl File for UDP

source§

fn readable(&self) -> bool

source§

fn writable(&self) -> bool

source§

fn read(&self, buf: UserBuffer) -> usize

source§

fn write(&self, buf: UserBuffer) -> usize

Auto Trait Implementations§

§

impl RefUnwindSafe for UDP

§

impl Send for UDP

§

impl Sync for UDP

§

impl Unpin for UDP

§

impl UnwindSafe for UDP

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sbi/fn.set_timer.html b/ch9/os/sbi/fn.set_timer.html index 3514179f4..ba2377c96 100644 --- a/ch9/os/sbi/fn.set_timer.html +++ b/ch9/os/sbi/fn.set_timer.html @@ -1,2 +1,3 @@ -set_timer in os::sbi - Rust

Function os::sbi::set_timer

source ·
pub fn set_timer(timer: usize)
Expand description

use sbi call to set timer

+set_timer in os::sbi - Rust +

Function os::sbi::set_timer

source ·
pub fn set_timer(timer: usize)
Expand description

use sbi call to set timer

\ No newline at end of file diff --git a/ch9/os/sbi/fn.shutdown.html b/ch9/os/sbi/fn.shutdown.html index 98b9377b5..e5419fc73 100644 --- a/ch9/os/sbi/fn.shutdown.html +++ b/ch9/os/sbi/fn.shutdown.html @@ -1,2 +1,3 @@ -shutdown in os::sbi - Rust

Function os::sbi::shutdown

source ·
pub fn shutdown(failure: bool) -> !
Expand description

use sbi call to shutdown the kernel

+shutdown in os::sbi - Rust +

Function os::sbi::shutdown

source ·
pub fn shutdown(failure: bool) -> !
Expand description

use sbi call to shutdown the kernel

\ No newline at end of file diff --git a/ch9/os/sbi/index.html b/ch9/os/sbi/index.html index ce3d5372d..d31ad349d 100644 --- a/ch9/os/sbi/index.html +++ b/ch9/os/sbi/index.html @@ -1 +1,2 @@ -os::sbi - Rust

Module os::sbi

source ·

Functions

\ No newline at end of file +os::sbi - Rust +

Module os::sbi

source ·

Functions

\ No newline at end of file diff --git a/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html b/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html index c3150ff97..ca63e78f6 100644 --- a/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html +++ b/ch9/os/struct.DEV_NON_BLOCKING_ACCESS.html @@ -1,27 +1,28 @@ -DEV_NON_BLOCKING_ACCESS in os - Rust
pub struct DEV_NON_BLOCKING_ACCESS {
+DEV_NON_BLOCKING_ACCESS in os - Rust
+    
pub struct DEV_NON_BLOCKING_ACCESS {
     pub(crate) __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<bool>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for DEV_NON_BLOCKING_ACCESS

§

type Target = UPIntrFreeCell<bool>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<bool>

Dereferences the value.
source§

impl LazyStatic for DEV_NON_BLOCKING_ACCESS

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<bool>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for DEV_NON_BLOCKING_ACCESS

§

type Target = UPIntrFreeCell<bool>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<bool>

Dereferences the value.
source§

impl LazyStatic for DEV_NON_BLOCKING_ACCESS

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/condvar/index.html b/ch9/os/sync/condvar/index.html index 297e13a97..b022b5f72 100644 --- a/ch9/os/sync/condvar/index.html +++ b/ch9/os/sync/condvar/index.html @@ -1 +1,2 @@ -os::sync::condvar - Rust
\ No newline at end of file +os::sync::condvar - Rust +
\ No newline at end of file diff --git a/ch9/os/sync/condvar/struct.Condvar.html b/ch9/os/sync/condvar/struct.Condvar.html index 94cf611d5..385dc0047 100644 --- a/ch9/os/sync/condvar/struct.Condvar.html +++ b/ch9/os/sync/condvar/struct.Condvar.html @@ -1,25 +1,26 @@ -Condvar in os::sync::condvar - Rust

Struct os::sync::condvar::Condvar

source ·
pub struct Condvar {
+Condvar in os::sync::condvar - Rust
+    

Struct os::sync::condvar::Condvar

source ·
pub struct Condvar {
     pub inner: UPIntrFreeCell<CondvarInner>,
-}

Fields§

§inner: UPIntrFreeCell<CondvarInner>

Implementations§

source§

impl Condvar

source

pub fn new() -> Self

source

pub fn signal(&self)

source

pub fn wait_no_sched(&self) -> *mut TaskContext

source

pub fn wait_with_mutex(&self, mutex: Arc<dyn Mutex>)

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§inner: UPIntrFreeCell<CondvarInner>

Implementations§

source§

impl Condvar

source

pub fn new() -> Self

source

pub fn signal(&self)

source

pub fn wait_no_sched(&self) -> *mut TaskContext

source

pub fn wait_with_mutex(&self, mutex: Arc<dyn Mutex>)

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/condvar/struct.CondvarInner.html b/ch9/os/sync/condvar/struct.CondvarInner.html index 4cf1d63d7..dd20071b3 100644 --- a/ch9/os/sync/condvar/struct.CondvarInner.html +++ b/ch9/os/sync/condvar/struct.CondvarInner.html @@ -1,25 +1,26 @@ -CondvarInner in os::sync::condvar - Rust

Struct os::sync::condvar::CondvarInner

source ·
pub struct CondvarInner {
+CondvarInner in os::sync::condvar - Rust
+    

Struct os::sync::condvar::CondvarInner

source ·
pub struct CondvarInner {
     pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
-}

Fields§

§wait_queue: VecDeque<Arc<TaskControlBlock>>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§wait_queue: VecDeque<Arc<TaskControlBlock>>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/index.html b/ch9/os/sync/index.html index 8ca5bae63..dccacb9b4 100644 --- a/ch9/os/sync/index.html +++ b/ch9/os/sync/index.html @@ -1 +1,2 @@ -os::sync - Rust

Module os::sync

source ·

Re-exports

Modules

\ No newline at end of file +os::sync - Rust +

Module os::sync

source ·

Re-exports

Modules

\ No newline at end of file diff --git a/ch9/os/sync/mutex/index.html b/ch9/os/sync/mutex/index.html index 1a5d2a20b..947b44cfb 100644 --- a/ch9/os/sync/mutex/index.html +++ b/ch9/os/sync/mutex/index.html @@ -1 +1,2 @@ -os::sync::mutex - Rust
\ No newline at end of file +os::sync::mutex - Rust +
\ No newline at end of file diff --git a/ch9/os/sync/mutex/struct.MutexBlocking.html b/ch9/os/sync/mutex/struct.MutexBlocking.html index 2e43a8dc0..d9ec65cc4 100644 --- a/ch9/os/sync/mutex/struct.MutexBlocking.html +++ b/ch9/os/sync/mutex/struct.MutexBlocking.html @@ -1,25 +1,26 @@ -MutexBlocking in os::sync::mutex - Rust

Struct os::sync::mutex::MutexBlocking

source ·
pub struct MutexBlocking {
+MutexBlocking in os::sync::mutex - Rust
+    

Struct os::sync::mutex::MutexBlocking

source ·
pub struct MutexBlocking {
     inner: UPIntrFreeCell<MutexBlockingInner>,
-}

Fields§

§inner: UPIntrFreeCell<MutexBlockingInner>

Implementations§

source§

impl MutexBlocking

source

pub fn new() -> Self

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§inner: UPIntrFreeCell<MutexBlockingInner>

Implementations§

source§

impl MutexBlocking

source

pub fn new() -> Self

Trait Implementations§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/mutex/struct.MutexBlockingInner.html b/ch9/os/sync/mutex/struct.MutexBlockingInner.html index a6165a522..ba55acb40 100644 --- a/ch9/os/sync/mutex/struct.MutexBlockingInner.html +++ b/ch9/os/sync/mutex/struct.MutexBlockingInner.html @@ -1,26 +1,27 @@ -MutexBlockingInner in os::sync::mutex - Rust
pub struct MutexBlockingInner {
+MutexBlockingInner in os::sync::mutex - Rust
+    
pub struct MutexBlockingInner {
     locked: bool,
     wait_queue: VecDeque<Arc<TaskControlBlock>>,
-}

Fields§

§locked: bool§wait_queue: VecDeque<Arc<TaskControlBlock>>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§locked: bool§wait_queue: VecDeque<Arc<TaskControlBlock>>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/mutex/struct.MutexSpin.html b/ch9/os/sync/mutex/struct.MutexSpin.html index 27631b497..89b12e576 100644 --- a/ch9/os/sync/mutex/struct.MutexSpin.html +++ b/ch9/os/sync/mutex/struct.MutexSpin.html @@ -1,25 +1,26 @@ -MutexSpin in os::sync::mutex - Rust

Struct os::sync::mutex::MutexSpin

source ·
pub struct MutexSpin {
+MutexSpin in os::sync::mutex - Rust
+    

Struct os::sync::mutex::MutexSpin

source ·
pub struct MutexSpin {
     locked: UPIntrFreeCell<bool>,
-}

Fields§

§locked: UPIntrFreeCell<bool>

Implementations§

source§

impl MutexSpin

source

pub fn new() -> Self

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§locked: UPIntrFreeCell<bool>

Implementations§

source§

impl MutexSpin

source

pub fn new() -> Self

Trait Implementations§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/mutex/trait.Mutex.html b/ch9/os/sync/mutex/trait.Mutex.html index 79fbb3db9..737c30497 100644 --- a/ch9/os/sync/mutex/trait.Mutex.html +++ b/ch9/os/sync/mutex/trait.Mutex.html @@ -1,5 +1,6 @@ -Mutex in os::sync::mutex - Rust

Trait os::sync::mutex::Mutex

source ·
pub trait Mutex: Sync + Send {
+Mutex in os::sync::mutex - Rust
+    

Trait os::sync::mutex::Mutex

source ·
pub trait Mutex: Sync + Send {
     // Required methods
     fn lock(&self);
     fn unlock(&self);
-}

Required Methods§

source

fn lock(&self)

source

fn unlock(&self)

Implementors§

\ No newline at end of file +}

Required Methods§

source

fn lock(&self)

source

fn unlock(&self)

Implementors§

\ No newline at end of file diff --git a/ch9/os/sync/semaphore/index.html b/ch9/os/sync/semaphore/index.html index f7f38c143..41b050732 100644 --- a/ch9/os/sync/semaphore/index.html +++ b/ch9/os/sync/semaphore/index.html @@ -1 +1,2 @@ -os::sync::semaphore - Rust
\ No newline at end of file +os::sync::semaphore - Rust +
\ No newline at end of file diff --git a/ch9/os/sync/semaphore/struct.Semaphore.html b/ch9/os/sync/semaphore/struct.Semaphore.html index 8c0735cbd..55f981f85 100644 --- a/ch9/os/sync/semaphore/struct.Semaphore.html +++ b/ch9/os/sync/semaphore/struct.Semaphore.html @@ -1,25 +1,26 @@ -Semaphore in os::sync::semaphore - Rust

Struct os::sync::semaphore::Semaphore

source ·
pub struct Semaphore {
+Semaphore in os::sync::semaphore - Rust
+    

Struct os::sync::semaphore::Semaphore

source ·
pub struct Semaphore {
     pub inner: UPIntrFreeCell<SemaphoreInner>,
-}

Fields§

§inner: UPIntrFreeCell<SemaphoreInner>

Implementations§

source§

impl Semaphore

source

pub fn new(res_count: usize) -> Self

source

pub fn up(&self)

source

pub fn down(&self)

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§inner: UPIntrFreeCell<SemaphoreInner>

Implementations§

source§

impl Semaphore

source

pub fn new(res_count: usize) -> Self

source

pub fn up(&self)

source

pub fn down(&self)

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/semaphore/struct.SemaphoreInner.html b/ch9/os/sync/semaphore/struct.SemaphoreInner.html index 0457fef31..6bfa7aa4a 100644 --- a/ch9/os/sync/semaphore/struct.SemaphoreInner.html +++ b/ch9/os/sync/semaphore/struct.SemaphoreInner.html @@ -1,26 +1,27 @@ -SemaphoreInner in os::sync::semaphore - Rust
pub struct SemaphoreInner {
+SemaphoreInner in os::sync::semaphore - Rust
+    
pub struct SemaphoreInner {
     pub count: isize,
     pub wait_queue: VecDeque<Arc<TaskControlBlock>>,
-}

Fields§

§count: isize§wait_queue: VecDeque<Arc<TaskControlBlock>>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§count: isize§wait_queue: VecDeque<Arc<TaskControlBlock>>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/up/index.html b/ch9/os/sync/up/index.html index 3f85286f8..184f4fd42 100644 --- a/ch9/os/sync/up/index.html +++ b/ch9/os/sync/up/index.html @@ -1 +1,2 @@ -os::sync::up - Rust
\ No newline at end of file +os::sync::up - Rust +
\ No newline at end of file diff --git a/ch9/os/sync/up/struct.INTR_MASKING_INFO.html b/ch9/os/sync/up/struct.INTR_MASKING_INFO.html index 0a03b8a20..ee9aeab5b 100644 --- a/ch9/os/sync/up/struct.INTR_MASKING_INFO.html +++ b/ch9/os/sync/up/struct.INTR_MASKING_INFO.html @@ -1,25 +1,26 @@ -INTR_MASKING_INFO in os::sync::up - Rust

Struct os::sync::up::INTR_MASKING_INFO

source ·
struct INTR_MASKING_INFO {
+INTR_MASKING_INFO in os::sync::up - Rust
+    

Struct os::sync::up::INTR_MASKING_INFO

source ·
struct INTR_MASKING_INFO {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPSafeCellRaw<IntrMaskingInfo>>§

source

pub fn get_mut(&self) -> &mut T

Trait Implementations§

source§

impl Deref for INTR_MASKING_INFO

§

type Target = UPSafeCellRaw<IntrMaskingInfo>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPSafeCellRaw<IntrMaskingInfo>

Dereferences the value.
source§

impl LazyStatic for INTR_MASKING_INFO

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPSafeCellRaw<IntrMaskingInfo>>§

source

pub fn get_mut(&self) -> &mut T

Trait Implementations§

source§

impl Deref for INTR_MASKING_INFO

§

type Target = UPSafeCellRaw<IntrMaskingInfo>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPSafeCellRaw<IntrMaskingInfo>

Dereferences the value.
source§

impl LazyStatic for INTR_MASKING_INFO

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/up/struct.IntrMaskingInfo.html b/ch9/os/sync/up/struct.IntrMaskingInfo.html index 8cfe6c1c8..41746f054 100644 --- a/ch9/os/sync/up/struct.IntrMaskingInfo.html +++ b/ch9/os/sync/up/struct.IntrMaskingInfo.html @@ -1,26 +1,27 @@ -IntrMaskingInfo in os::sync::up - Rust

Struct os::sync::up::IntrMaskingInfo

source ·
pub struct IntrMaskingInfo {
+IntrMaskingInfo in os::sync::up - Rust
+    

Struct os::sync::up::IntrMaskingInfo

source ·
pub struct IntrMaskingInfo {
     nested_level: usize,
     sie_before_masking: bool,
-}

Fields§

§nested_level: usize§sie_before_masking: bool

Implementations§

source§

impl IntrMaskingInfo

source

pub fn new() -> Self

source

pub fn enter(&mut self)

source

pub fn exit(&mut self)

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§nested_level: usize§sie_before_masking: bool

Implementations§

source§

impl IntrMaskingInfo

source

pub fn new() -> Self

source

pub fn enter(&mut self)

source

pub fn exit(&mut self)

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/up/struct.UPIntrFreeCell.html b/ch9/os/sync/up/struct.UPIntrFreeCell.html index 70cfd1212..81ad729cf 100644 --- a/ch9/os/sync/up/struct.UPIntrFreeCell.html +++ b/ch9/os/sync/up/struct.UPIntrFreeCell.html @@ -1,31 +1,32 @@ -UPIntrFreeCell in os::sync::up - Rust

Struct os::sync::up::UPIntrFreeCell

source ·
pub struct UPIntrFreeCell<T> {
+UPIntrFreeCell in os::sync::up - Rust
+    

Struct os::sync::up::UPIntrFreeCell

source ·
pub struct UPIntrFreeCell<T> {
     inner: RefCell<T>,
-}

Fields§

§inner: RefCell<T>

inner data

-

Implementations§

source§

impl<T> UPIntrFreeCell<T>

source

pub unsafe fn new(value: T) -> Self

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for UPIntrFreeCell<T>

§

impl<T> Send for UPIntrFreeCell<T>where - T: Send,

§

impl<T> Unpin for UPIntrFreeCell<T>where - T: Unpin,

§

impl<T> UnwindSafe for UPIntrFreeCell<T>where - T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§inner: RefCell<T>

inner data

+

Implementations§

source§

impl<T> UPIntrFreeCell<T>

source

pub unsafe fn new(value: T) -> Self

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for UPIntrFreeCell<T>

§

impl<T> Send for UPIntrFreeCell<T>
where + T: Send,

§

impl<T> Unpin for UPIntrFreeCell<T>
where + T: Unpin,

§

impl<T> UnwindSafe for UPIntrFreeCell<T>
where + T: UnwindSafe,

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/up/struct.UPIntrRefMut.html b/ch9/os/sync/up/struct.UPIntrRefMut.html index b3957692d..9421aa241 100644 --- a/ch9/os/sync/up/struct.UPIntrRefMut.html +++ b/ch9/os/sync/up/struct.UPIntrRefMut.html @@ -1,23 +1,24 @@ -UPIntrRefMut in os::sync::up - Rust

Struct os::sync::up::UPIntrRefMut

source ·
pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);

Tuple Fields§

§0: Option<RefMut<'a, T>>

Trait Implementations§

source§

impl<'a, T> Deref for UPIntrRefMut<'a, T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<'a, T> DerefMut for UPIntrRefMut<'a, T>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<'a, T> Drop for UPIntrRefMut<'a, T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a, T> !RefUnwindSafe for UPIntrRefMut<'a, T>

§

impl<'a, T> !Send for UPIntrRefMut<'a, T>

§

impl<'a, T> !Sync for UPIntrRefMut<'a, T>

§

impl<'a, T> Unpin for UPIntrRefMut<'a, T>

§

impl<'a, T> !UnwindSafe for UPIntrRefMut<'a, T>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+UPIntrRefMut in os::sync::up - Rust +

Struct os::sync::up::UPIntrRefMut

source ·
pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);

Tuple Fields§

§0: Option<RefMut<'a, T>>

Trait Implementations§

source§

impl<'a, T> DerefMut for UPIntrRefMut<'a, T>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<'a, T> Drop for UPIntrRefMut<'a, T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'a, T> Deref for UPIntrRefMut<'a, T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<'a, T> !RefUnwindSafe for UPIntrRefMut<'a, T>

§

impl<'a, T> !Send for UPIntrRefMut<'a, T>

§

impl<'a, T> !Sync for UPIntrRefMut<'a, T>

§

impl<'a, T> Unpin for UPIntrRefMut<'a, T>

§

impl<'a, T> !UnwindSafe for UPIntrRefMut<'a, T>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/sync/up/struct.UPSafeCellRaw.html b/ch9/os/sync/up/struct.UPSafeCellRaw.html index a909e2f0b..424141174 100644 --- a/ch9/os/sync/up/struct.UPSafeCellRaw.html +++ b/ch9/os/sync/up/struct.UPSafeCellRaw.html @@ -1,28 +1,29 @@ -UPSafeCellRaw in os::sync::up - Rust

Struct os::sync::up::UPSafeCellRaw

source ·
pub struct UPSafeCellRaw<T> {
+UPSafeCellRaw in os::sync::up - Rust
+    

Struct os::sync::up::UPSafeCellRaw

source ·
pub struct UPSafeCellRaw<T> {
     inner: UnsafeCell<T>,
-}

Fields§

§inner: UnsafeCell<T>

Implementations§

source§

impl<T> UPSafeCellRaw<T>

source

pub unsafe fn new(value: T) -> Self

source

pub fn get_mut(&self) -> &mut T

Trait Implementations§

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for UPSafeCellRaw<T>

§

impl<T> Send for UPSafeCellRaw<T>where - T: Send,

§

impl<T> Unpin for UPSafeCellRaw<T>where - T: Unpin,

§

impl<T> UnwindSafe for UPSafeCellRaw<T>where - T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§inner: UnsafeCell<T>

Implementations§

source§

impl<T> UPSafeCellRaw<T>

source

pub unsafe fn new(value: T) -> Self

source

pub fn get_mut(&self) -> &mut T

Trait Implementations§

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for UPSafeCellRaw<T>

§

impl<T> Send for UPSafeCellRaw<T>
where + T: Send,

§

impl<T> Unpin for UPSafeCellRaw<T>
where + T: Unpin,

§

impl<T> UnwindSafe for UPSafeCellRaw<T>
where + T: UnwindSafe,

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_ACCEPT.html b/ch9/os/syscall/constant.SYSCALL_ACCEPT.html index 811451952..746db602c 100644 --- a/ch9/os/syscall/constant.SYSCALL_ACCEPT.html +++ b/ch9/os/syscall/constant.SYSCALL_ACCEPT.html @@ -1 +1,2 @@ -SYSCALL_ACCEPT in os::syscall - Rust

Constant os::syscall::SYSCALL_ACCEPT

source ·
const SYSCALL_ACCEPT: usize = 31;
\ No newline at end of file +SYSCALL_ACCEPT in os::syscall - Rust +

Constant os::syscall::SYSCALL_ACCEPT

source ·
const SYSCALL_ACCEPT: usize = 31;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_CLOSE.html b/ch9/os/syscall/constant.SYSCALL_CLOSE.html index 6e79271b9..53b284334 100644 --- a/ch9/os/syscall/constant.SYSCALL_CLOSE.html +++ b/ch9/os/syscall/constant.SYSCALL_CLOSE.html @@ -1 +1,2 @@ -SYSCALL_CLOSE in os::syscall - Rust

Constant os::syscall::SYSCALL_CLOSE

source ·
const SYSCALL_CLOSE: usize = 57;
\ No newline at end of file +SYSCALL_CLOSE in os::syscall - Rust +

Constant os::syscall::SYSCALL_CLOSE

source ·
const SYSCALL_CLOSE: usize = 57;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html b/ch9/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html index e5d6b7912..a59616e5a 100644 --- a/ch9/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html +++ b/ch9/os/syscall/constant.SYSCALL_CONDVAR_CREATE.html @@ -1 +1,2 @@ -SYSCALL_CONDVAR_CREATE in os::syscall - Rust
const SYSCALL_CONDVAR_CREATE: usize = 1030;
\ No newline at end of file +SYSCALL_CONDVAR_CREATE in os::syscall - Rust +
const SYSCALL_CONDVAR_CREATE: usize = 1030;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html b/ch9/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html index 59bf3c6f5..b0924306d 100644 --- a/ch9/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html +++ b/ch9/os/syscall/constant.SYSCALL_CONDVAR_SIGNAL.html @@ -1 +1,2 @@ -SYSCALL_CONDVAR_SIGNAL in os::syscall - Rust
const SYSCALL_CONDVAR_SIGNAL: usize = 1031;
\ No newline at end of file +SYSCALL_CONDVAR_SIGNAL in os::syscall - Rust +
const SYSCALL_CONDVAR_SIGNAL: usize = 1031;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html b/ch9/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html index 02a30952e..3237d8289 100644 --- a/ch9/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html +++ b/ch9/os/syscall/constant.SYSCALL_CONDVAR_WAIT.html @@ -1 +1,2 @@ -SYSCALL_CONDVAR_WAIT in os::syscall - Rust
const SYSCALL_CONDVAR_WAIT: usize = 1032;
\ No newline at end of file +SYSCALL_CONDVAR_WAIT in os::syscall - Rust +
const SYSCALL_CONDVAR_WAIT: usize = 1032;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_CONNECT.html b/ch9/os/syscall/constant.SYSCALL_CONNECT.html index 14c2b1078..a10da0b3e 100644 --- a/ch9/os/syscall/constant.SYSCALL_CONNECT.html +++ b/ch9/os/syscall/constant.SYSCALL_CONNECT.html @@ -1 +1,2 @@ -SYSCALL_CONNECT in os::syscall - Rust

Constant os::syscall::SYSCALL_CONNECT

source ·
const SYSCALL_CONNECT: usize = 29;
\ No newline at end of file +SYSCALL_CONNECT in os::syscall - Rust +

Constant os::syscall::SYSCALL_CONNECT

source ·
const SYSCALL_CONNECT: usize = 29;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_DUP.html b/ch9/os/syscall/constant.SYSCALL_DUP.html index 929e7737a..54e088cd5 100644 --- a/ch9/os/syscall/constant.SYSCALL_DUP.html +++ b/ch9/os/syscall/constant.SYSCALL_DUP.html @@ -1 +1,2 @@ -SYSCALL_DUP in os::syscall - Rust

Constant os::syscall::SYSCALL_DUP

source ·
const SYSCALL_DUP: usize = 24;
\ No newline at end of file +SYSCALL_DUP in os::syscall - Rust +

Constant os::syscall::SYSCALL_DUP

source ·
const SYSCALL_DUP: usize = 24;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_EVENT_GET.html b/ch9/os/syscall/constant.SYSCALL_EVENT_GET.html index dae94840b..830be8fa6 100644 --- a/ch9/os/syscall/constant.SYSCALL_EVENT_GET.html +++ b/ch9/os/syscall/constant.SYSCALL_EVENT_GET.html @@ -1 +1,2 @@ -SYSCALL_EVENT_GET in os::syscall - Rust

Constant os::syscall::SYSCALL_EVENT_GET

source ·
const SYSCALL_EVENT_GET: usize = 3000;
\ No newline at end of file +SYSCALL_EVENT_GET in os::syscall - Rust +

Constant os::syscall::SYSCALL_EVENT_GET

source ·
const SYSCALL_EVENT_GET: usize = 3000;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_EXEC.html b/ch9/os/syscall/constant.SYSCALL_EXEC.html index c0a1014e4..1fff1f183 100644 --- a/ch9/os/syscall/constant.SYSCALL_EXEC.html +++ b/ch9/os/syscall/constant.SYSCALL_EXEC.html @@ -1 +1,2 @@ -SYSCALL_EXEC in os::syscall - Rust

Constant os::syscall::SYSCALL_EXEC

source ·
const SYSCALL_EXEC: usize = 221;
\ No newline at end of file +SYSCALL_EXEC in os::syscall - Rust +

Constant os::syscall::SYSCALL_EXEC

source ·
const SYSCALL_EXEC: usize = 221;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_EXIT.html b/ch9/os/syscall/constant.SYSCALL_EXIT.html index abfcef935..76f5fdb2e 100644 --- a/ch9/os/syscall/constant.SYSCALL_EXIT.html +++ b/ch9/os/syscall/constant.SYSCALL_EXIT.html @@ -1 +1,2 @@ -SYSCALL_EXIT in os::syscall - Rust

Constant os::syscall::SYSCALL_EXIT

source ·
const SYSCALL_EXIT: usize = 93;
\ No newline at end of file +SYSCALL_EXIT in os::syscall - Rust +

Constant os::syscall::SYSCALL_EXIT

source ·
const SYSCALL_EXIT: usize = 93;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_FORK.html b/ch9/os/syscall/constant.SYSCALL_FORK.html index 751f9ba0c..53068ea37 100644 --- a/ch9/os/syscall/constant.SYSCALL_FORK.html +++ b/ch9/os/syscall/constant.SYSCALL_FORK.html @@ -1 +1,2 @@ -SYSCALL_FORK in os::syscall - Rust

Constant os::syscall::SYSCALL_FORK

source ·
const SYSCALL_FORK: usize = 220;
\ No newline at end of file +SYSCALL_FORK in os::syscall - Rust +

Constant os::syscall::SYSCALL_FORK

source ·
const SYSCALL_FORK: usize = 220;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER.html b/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER.html index aa2a0d181..98b88aaaa 100644 --- a/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER.html +++ b/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER.html @@ -1 +1,2 @@ -SYSCALL_FRAMEBUFFER in os::syscall - Rust
const SYSCALL_FRAMEBUFFER: usize = 2000;
\ No newline at end of file +SYSCALL_FRAMEBUFFER in os::syscall - Rust +
const SYSCALL_FRAMEBUFFER: usize = 2000;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER_FLUSH.html b/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER_FLUSH.html index d2cff8153..e963beec2 100644 --- a/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER_FLUSH.html +++ b/ch9/os/syscall/constant.SYSCALL_FRAMEBUFFER_FLUSH.html @@ -1 +1,2 @@ -SYSCALL_FRAMEBUFFER_FLUSH in os::syscall - Rust
const SYSCALL_FRAMEBUFFER_FLUSH: usize = 2001;
\ No newline at end of file +SYSCALL_FRAMEBUFFER_FLUSH in os::syscall - Rust +
const SYSCALL_FRAMEBUFFER_FLUSH: usize = 2001;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_GETPID.html b/ch9/os/syscall/constant.SYSCALL_GETPID.html index 33480ee97..e04f4afd1 100644 --- a/ch9/os/syscall/constant.SYSCALL_GETPID.html +++ b/ch9/os/syscall/constant.SYSCALL_GETPID.html @@ -1 +1,2 @@ -SYSCALL_GETPID in os::syscall - Rust

Constant os::syscall::SYSCALL_GETPID

source ·
const SYSCALL_GETPID: usize = 172;
\ No newline at end of file +SYSCALL_GETPID in os::syscall - Rust +

Constant os::syscall::SYSCALL_GETPID

source ·
const SYSCALL_GETPID: usize = 172;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_GETTID.html b/ch9/os/syscall/constant.SYSCALL_GETTID.html index 45e73298a..6dd042ec4 100644 --- a/ch9/os/syscall/constant.SYSCALL_GETTID.html +++ b/ch9/os/syscall/constant.SYSCALL_GETTID.html @@ -1 +1,2 @@ -SYSCALL_GETTID in os::syscall - Rust

Constant os::syscall::SYSCALL_GETTID

source ·
const SYSCALL_GETTID: usize = 1001;
\ No newline at end of file +SYSCALL_GETTID in os::syscall - Rust +

Constant os::syscall::SYSCALL_GETTID

source ·
const SYSCALL_GETTID: usize = 1001;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_GET_TIME.html b/ch9/os/syscall/constant.SYSCALL_GET_TIME.html index c0e27e40d..de0b6fcb2 100644 --- a/ch9/os/syscall/constant.SYSCALL_GET_TIME.html +++ b/ch9/os/syscall/constant.SYSCALL_GET_TIME.html @@ -1 +1,2 @@ -SYSCALL_GET_TIME in os::syscall - Rust

Constant os::syscall::SYSCALL_GET_TIME

source ·
const SYSCALL_GET_TIME: usize = 169;
\ No newline at end of file +SYSCALL_GET_TIME in os::syscall - Rust +

Constant os::syscall::SYSCALL_GET_TIME

source ·
const SYSCALL_GET_TIME: usize = 169;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_KEY_PRESSED.html b/ch9/os/syscall/constant.SYSCALL_KEY_PRESSED.html index b1cebb397..68549afbc 100644 --- a/ch9/os/syscall/constant.SYSCALL_KEY_PRESSED.html +++ b/ch9/os/syscall/constant.SYSCALL_KEY_PRESSED.html @@ -1 +1,2 @@ -SYSCALL_KEY_PRESSED in os::syscall - Rust
const SYSCALL_KEY_PRESSED: usize = 3001;
\ No newline at end of file +SYSCALL_KEY_PRESSED in os::syscall - Rust +
const SYSCALL_KEY_PRESSED: usize = 3001;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_KILL.html b/ch9/os/syscall/constant.SYSCALL_KILL.html index 2ba6b8f59..d5083b501 100644 --- a/ch9/os/syscall/constant.SYSCALL_KILL.html +++ b/ch9/os/syscall/constant.SYSCALL_KILL.html @@ -1 +1,2 @@ -SYSCALL_KILL in os::syscall - Rust

Constant os::syscall::SYSCALL_KILL

source ·
const SYSCALL_KILL: usize = 129;
\ No newline at end of file +SYSCALL_KILL in os::syscall - Rust +

Constant os::syscall::SYSCALL_KILL

source ·
const SYSCALL_KILL: usize = 129;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_LISTEN.html b/ch9/os/syscall/constant.SYSCALL_LISTEN.html index 699c979e2..80b8c6f2d 100644 --- a/ch9/os/syscall/constant.SYSCALL_LISTEN.html +++ b/ch9/os/syscall/constant.SYSCALL_LISTEN.html @@ -1 +1,2 @@ -SYSCALL_LISTEN in os::syscall - Rust

Constant os::syscall::SYSCALL_LISTEN

source ·
const SYSCALL_LISTEN: usize = 30;
\ No newline at end of file +SYSCALL_LISTEN in os::syscall - Rust +

Constant os::syscall::SYSCALL_LISTEN

source ·
const SYSCALL_LISTEN: usize = 30;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_MUTEX_CREATE.html b/ch9/os/syscall/constant.SYSCALL_MUTEX_CREATE.html index 0c7c66791..1f3f90a18 100644 --- a/ch9/os/syscall/constant.SYSCALL_MUTEX_CREATE.html +++ b/ch9/os/syscall/constant.SYSCALL_MUTEX_CREATE.html @@ -1 +1,2 @@ -SYSCALL_MUTEX_CREATE in os::syscall - Rust
const SYSCALL_MUTEX_CREATE: usize = 1010;
\ No newline at end of file +SYSCALL_MUTEX_CREATE in os::syscall - Rust +
const SYSCALL_MUTEX_CREATE: usize = 1010;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_MUTEX_LOCK.html b/ch9/os/syscall/constant.SYSCALL_MUTEX_LOCK.html index 9d2fe86c9..0d249569f 100644 --- a/ch9/os/syscall/constant.SYSCALL_MUTEX_LOCK.html +++ b/ch9/os/syscall/constant.SYSCALL_MUTEX_LOCK.html @@ -1 +1,2 @@ -SYSCALL_MUTEX_LOCK in os::syscall - Rust

Constant os::syscall::SYSCALL_MUTEX_LOCK

source ·
const SYSCALL_MUTEX_LOCK: usize = 1011;
\ No newline at end of file +SYSCALL_MUTEX_LOCK in os::syscall - Rust +

Constant os::syscall::SYSCALL_MUTEX_LOCK

source ·
const SYSCALL_MUTEX_LOCK: usize = 1011;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html b/ch9/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html index 9055e5a3d..449a46477 100644 --- a/ch9/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html +++ b/ch9/os/syscall/constant.SYSCALL_MUTEX_UNLOCK.html @@ -1 +1,2 @@ -SYSCALL_MUTEX_UNLOCK in os::syscall - Rust
const SYSCALL_MUTEX_UNLOCK: usize = 1012;
\ No newline at end of file +SYSCALL_MUTEX_UNLOCK in os::syscall - Rust +
const SYSCALL_MUTEX_UNLOCK: usize = 1012;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_OPEN.html b/ch9/os/syscall/constant.SYSCALL_OPEN.html index 5c9aaf3a3..e46f8c6c5 100644 --- a/ch9/os/syscall/constant.SYSCALL_OPEN.html +++ b/ch9/os/syscall/constant.SYSCALL_OPEN.html @@ -1 +1,2 @@ -SYSCALL_OPEN in os::syscall - Rust

Constant os::syscall::SYSCALL_OPEN

source ·
const SYSCALL_OPEN: usize = 56;
\ No newline at end of file +SYSCALL_OPEN in os::syscall - Rust +

Constant os::syscall::SYSCALL_OPEN

source ·
const SYSCALL_OPEN: usize = 56;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_PIPE.html b/ch9/os/syscall/constant.SYSCALL_PIPE.html index d39c3d99a..210680341 100644 --- a/ch9/os/syscall/constant.SYSCALL_PIPE.html +++ b/ch9/os/syscall/constant.SYSCALL_PIPE.html @@ -1 +1,2 @@ -SYSCALL_PIPE in os::syscall - Rust

Constant os::syscall::SYSCALL_PIPE

source ·
const SYSCALL_PIPE: usize = 59;
\ No newline at end of file +SYSCALL_PIPE in os::syscall - Rust +

Constant os::syscall::SYSCALL_PIPE

source ·
const SYSCALL_PIPE: usize = 59;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_READ.html b/ch9/os/syscall/constant.SYSCALL_READ.html index 8b547109f..4f80656d1 100644 --- a/ch9/os/syscall/constant.SYSCALL_READ.html +++ b/ch9/os/syscall/constant.SYSCALL_READ.html @@ -1 +1,2 @@ -SYSCALL_READ in os::syscall - Rust

Constant os::syscall::SYSCALL_READ

source ·
const SYSCALL_READ: usize = 63;
\ No newline at end of file +SYSCALL_READ in os::syscall - Rust +

Constant os::syscall::SYSCALL_READ

source ·
const SYSCALL_READ: usize = 63;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html b/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html index 387df7464..cfc6787e2 100644 --- a/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html +++ b/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_CREATE.html @@ -1 +1,2 @@ -SYSCALL_SEMAPHORE_CREATE in os::syscall - Rust
const SYSCALL_SEMAPHORE_CREATE: usize = 1020;
\ No newline at end of file +SYSCALL_SEMAPHORE_CREATE in os::syscall - Rust +
const SYSCALL_SEMAPHORE_CREATE: usize = 1020;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html b/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html index 16eae552e..81d222054 100644 --- a/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html +++ b/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_DOWN.html @@ -1 +1,2 @@ -SYSCALL_SEMAPHORE_DOWN in os::syscall - Rust
const SYSCALL_SEMAPHORE_DOWN: usize = 1022;
\ No newline at end of file +SYSCALL_SEMAPHORE_DOWN in os::syscall - Rust +
const SYSCALL_SEMAPHORE_DOWN: usize = 1022;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html b/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html index d3f9e6146..3d2487dab 100644 --- a/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html +++ b/ch9/os/syscall/constant.SYSCALL_SEMAPHORE_UP.html @@ -1 +1,2 @@ -SYSCALL_SEMAPHORE_UP in os::syscall - Rust
const SYSCALL_SEMAPHORE_UP: usize = 1021;
\ No newline at end of file +SYSCALL_SEMAPHORE_UP in os::syscall - Rust +
const SYSCALL_SEMAPHORE_UP: usize = 1021;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_SLEEP.html b/ch9/os/syscall/constant.SYSCALL_SLEEP.html index 2aee98d04..5efd699d5 100644 --- a/ch9/os/syscall/constant.SYSCALL_SLEEP.html +++ b/ch9/os/syscall/constant.SYSCALL_SLEEP.html @@ -1 +1,2 @@ -SYSCALL_SLEEP in os::syscall - Rust

Constant os::syscall::SYSCALL_SLEEP

source ·
const SYSCALL_SLEEP: usize = 101;
\ No newline at end of file +SYSCALL_SLEEP in os::syscall - Rust +

Constant os::syscall::SYSCALL_SLEEP

source ·
const SYSCALL_SLEEP: usize = 101;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_THREAD_CREATE.html b/ch9/os/syscall/constant.SYSCALL_THREAD_CREATE.html index 9e3861a0c..d4c1b39e7 100644 --- a/ch9/os/syscall/constant.SYSCALL_THREAD_CREATE.html +++ b/ch9/os/syscall/constant.SYSCALL_THREAD_CREATE.html @@ -1 +1,2 @@ -SYSCALL_THREAD_CREATE in os::syscall - Rust
const SYSCALL_THREAD_CREATE: usize = 1000;
\ No newline at end of file +SYSCALL_THREAD_CREATE in os::syscall - Rust +
const SYSCALL_THREAD_CREATE: usize = 1000;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_WAITPID.html b/ch9/os/syscall/constant.SYSCALL_WAITPID.html index ac369b80e..0e249f837 100644 --- a/ch9/os/syscall/constant.SYSCALL_WAITPID.html +++ b/ch9/os/syscall/constant.SYSCALL_WAITPID.html @@ -1 +1,2 @@ -SYSCALL_WAITPID in os::syscall - Rust

Constant os::syscall::SYSCALL_WAITPID

source ·
const SYSCALL_WAITPID: usize = 260;
\ No newline at end of file +SYSCALL_WAITPID in os::syscall - Rust +

Constant os::syscall::SYSCALL_WAITPID

source ·
const SYSCALL_WAITPID: usize = 260;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_WAITTID.html b/ch9/os/syscall/constant.SYSCALL_WAITTID.html index 244609463..cf4b64161 100644 --- a/ch9/os/syscall/constant.SYSCALL_WAITTID.html +++ b/ch9/os/syscall/constant.SYSCALL_WAITTID.html @@ -1 +1,2 @@ -SYSCALL_WAITTID in os::syscall - Rust

Constant os::syscall::SYSCALL_WAITTID

source ·
const SYSCALL_WAITTID: usize = 1002;
\ No newline at end of file +SYSCALL_WAITTID in os::syscall - Rust +

Constant os::syscall::SYSCALL_WAITTID

source ·
const SYSCALL_WAITTID: usize = 1002;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_WRITE.html b/ch9/os/syscall/constant.SYSCALL_WRITE.html index c723ee66b..113c4f264 100644 --- a/ch9/os/syscall/constant.SYSCALL_WRITE.html +++ b/ch9/os/syscall/constant.SYSCALL_WRITE.html @@ -1 +1,2 @@ -SYSCALL_WRITE in os::syscall - Rust

Constant os::syscall::SYSCALL_WRITE

source ·
const SYSCALL_WRITE: usize = 64;
\ No newline at end of file +SYSCALL_WRITE in os::syscall - Rust +

Constant os::syscall::SYSCALL_WRITE

source ·
const SYSCALL_WRITE: usize = 64;
\ No newline at end of file diff --git a/ch9/os/syscall/constant.SYSCALL_YIELD.html b/ch9/os/syscall/constant.SYSCALL_YIELD.html index 3af24e53d..18a62f809 100644 --- a/ch9/os/syscall/constant.SYSCALL_YIELD.html +++ b/ch9/os/syscall/constant.SYSCALL_YIELD.html @@ -1 +1,2 @@ -SYSCALL_YIELD in os::syscall - Rust

Constant os::syscall::SYSCALL_YIELD

source ·
const SYSCALL_YIELD: usize = 124;
\ No newline at end of file +SYSCALL_YIELD in os::syscall - Rust +

Constant os::syscall::SYSCALL_YIELD

source ·
const SYSCALL_YIELD: usize = 124;
\ No newline at end of file diff --git a/ch9/os/syscall/fn.syscall.html b/ch9/os/syscall/fn.syscall.html index ea248886a..6e5fa3c6f 100644 --- a/ch9/os/syscall/fn.syscall.html +++ b/ch9/os/syscall/fn.syscall.html @@ -1 +1,2 @@ -syscall in os::syscall - Rust

Function os::syscall::syscall

source ·
pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize
\ No newline at end of file +syscall in os::syscall - Rust +

Function os::syscall::syscall

source ·
pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/fs/fn.sys_close.html b/ch9/os/syscall/fs/fn.sys_close.html index e61e0d1b5..021275d99 100644 --- a/ch9/os/syscall/fs/fn.sys_close.html +++ b/ch9/os/syscall/fs/fn.sys_close.html @@ -1 +1,2 @@ -sys_close in os::syscall::fs - Rust

Function os::syscall::fs::sys_close

source ·
pub fn sys_close(fd: usize) -> isize
\ No newline at end of file +sys_close in os::syscall::fs - Rust +

Function os::syscall::fs::sys_close

source ·
pub fn sys_close(fd: usize) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/fs/fn.sys_dup.html b/ch9/os/syscall/fs/fn.sys_dup.html index b3cb3ed88..901a2c84a 100644 --- a/ch9/os/syscall/fs/fn.sys_dup.html +++ b/ch9/os/syscall/fs/fn.sys_dup.html @@ -1 +1,2 @@ -sys_dup in os::syscall::fs - Rust

Function os::syscall::fs::sys_dup

source ·
pub fn sys_dup(fd: usize) -> isize
\ No newline at end of file +sys_dup in os::syscall::fs - Rust +

Function os::syscall::fs::sys_dup

source ·
pub fn sys_dup(fd: usize) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/fs/fn.sys_open.html b/ch9/os/syscall/fs/fn.sys_open.html index 65b7fa1b8..b535dfadf 100644 --- a/ch9/os/syscall/fs/fn.sys_open.html +++ b/ch9/os/syscall/fs/fn.sys_open.html @@ -1 +1,2 @@ -sys_open in os::syscall::fs - Rust

Function os::syscall::fs::sys_open

source ·
pub fn sys_open(path: *const u8, flags: u32) -> isize
\ No newline at end of file +sys_open in os::syscall::fs - Rust +

Function os::syscall::fs::sys_open

source ·
pub fn sys_open(path: *const u8, flags: u32) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/fs/fn.sys_pipe.html b/ch9/os/syscall/fs/fn.sys_pipe.html index df2095046..aec2a356b 100644 --- a/ch9/os/syscall/fs/fn.sys_pipe.html +++ b/ch9/os/syscall/fs/fn.sys_pipe.html @@ -1 +1,2 @@ -sys_pipe in os::syscall::fs - Rust

Function os::syscall::fs::sys_pipe

source ·
pub fn sys_pipe(pipe: *mut usize) -> isize
\ No newline at end of file +sys_pipe in os::syscall::fs - Rust +

Function os::syscall::fs::sys_pipe

source ·
pub fn sys_pipe(pipe: *mut usize) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/fs/fn.sys_read.html b/ch9/os/syscall/fs/fn.sys_read.html index 14af4b943..1137ca7ac 100644 --- a/ch9/os/syscall/fs/fn.sys_read.html +++ b/ch9/os/syscall/fs/fn.sys_read.html @@ -1 +1,2 @@ -sys_read in os::syscall::fs - Rust

Function os::syscall::fs::sys_read

source ·
pub fn sys_read(fd: usize, buf: *const u8, len: usize) -> isize
\ No newline at end of file +sys_read in os::syscall::fs - Rust +

Function os::syscall::fs::sys_read

source ·
pub fn sys_read(fd: usize, buf: *const u8, len: usize) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/fs/fn.sys_write.html b/ch9/os/syscall/fs/fn.sys_write.html index ba8b01bd8..fcf443f32 100644 --- a/ch9/os/syscall/fs/fn.sys_write.html +++ b/ch9/os/syscall/fs/fn.sys_write.html @@ -1 +1,2 @@ -sys_write in os::syscall::fs - Rust

Function os::syscall::fs::sys_write

source ·
pub fn sys_write(fd: usize, buf: *const u8, len: usize) -> isize
\ No newline at end of file +sys_write in os::syscall::fs - Rust +

Function os::syscall::fs::sys_write

source ·
pub fn sys_write(fd: usize, buf: *const u8, len: usize) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/fs/index.html b/ch9/os/syscall/fs/index.html index 4deeb7db1..7bd3506fd 100644 --- a/ch9/os/syscall/fs/index.html +++ b/ch9/os/syscall/fs/index.html @@ -1 +1,2 @@ -os::syscall::fs - Rust
\ No newline at end of file +os::syscall::fs - Rust +
\ No newline at end of file diff --git a/ch9/os/syscall/gui/constant.FB_VADDR.html b/ch9/os/syscall/gui/constant.FB_VADDR.html index b687385bd..8392f3c91 100644 --- a/ch9/os/syscall/gui/constant.FB_VADDR.html +++ b/ch9/os/syscall/gui/constant.FB_VADDR.html @@ -1 +1,2 @@ -FB_VADDR in os::syscall::gui - Rust

Constant os::syscall::gui::FB_VADDR

source ·
const FB_VADDR: usize = 0x10000000;
\ No newline at end of file +FB_VADDR in os::syscall::gui - Rust +

Constant os::syscall::gui::FB_VADDR

source ·
const FB_VADDR: usize = 0x10000000;
\ No newline at end of file diff --git a/ch9/os/syscall/gui/fn.sys_framebuffer.html b/ch9/os/syscall/gui/fn.sys_framebuffer.html index 34bb3d61d..24f959094 100644 --- a/ch9/os/syscall/gui/fn.sys_framebuffer.html +++ b/ch9/os/syscall/gui/fn.sys_framebuffer.html @@ -1 +1,2 @@ -sys_framebuffer in os::syscall::gui - Rust

Function os::syscall::gui::sys_framebuffer

source ·
pub fn sys_framebuffer() -> isize
\ No newline at end of file +sys_framebuffer in os::syscall::gui - Rust +

Function os::syscall::gui::sys_framebuffer

source ·
pub fn sys_framebuffer() -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/gui/fn.sys_framebuffer_flush.html b/ch9/os/syscall/gui/fn.sys_framebuffer_flush.html index a062fc8cf..c6e9d326a 100644 --- a/ch9/os/syscall/gui/fn.sys_framebuffer_flush.html +++ b/ch9/os/syscall/gui/fn.sys_framebuffer_flush.html @@ -1 +1,2 @@ -sys_framebuffer_flush in os::syscall::gui - Rust
pub fn sys_framebuffer_flush() -> isize
\ No newline at end of file +sys_framebuffer_flush in os::syscall::gui - Rust +
pub fn sys_framebuffer_flush() -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/gui/index.html b/ch9/os/syscall/gui/index.html index 11e1d96ae..34ad25a77 100644 --- a/ch9/os/syscall/gui/index.html +++ b/ch9/os/syscall/gui/index.html @@ -1 +1,2 @@ -os::syscall::gui - Rust
\ No newline at end of file +os::syscall::gui - Rust +
\ No newline at end of file diff --git a/ch9/os/syscall/index.html b/ch9/os/syscall/index.html index f71dc0771..25598977b 100644 --- a/ch9/os/syscall/index.html +++ b/ch9/os/syscall/index.html @@ -1 +1,2 @@ -os::syscall - Rust
\ No newline at end of file +os::syscall - Rust +
\ No newline at end of file diff --git a/ch9/os/syscall/input/fn.sys_event_get.html b/ch9/os/syscall/input/fn.sys_event_get.html index 76d70100a..fc95e5c15 100644 --- a/ch9/os/syscall/input/fn.sys_event_get.html +++ b/ch9/os/syscall/input/fn.sys_event_get.html @@ -1 +1,2 @@ -sys_event_get in os::syscall::input - Rust

Function os::syscall::input::sys_event_get

source ·
pub fn sys_event_get() -> isize
\ No newline at end of file +sys_event_get in os::syscall::input - Rust +

Function os::syscall::input::sys_event_get

source ·
pub fn sys_event_get() -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/input/fn.sys_key_pressed.html b/ch9/os/syscall/input/fn.sys_key_pressed.html index 88dcd2e32..458f5515e 100644 --- a/ch9/os/syscall/input/fn.sys_key_pressed.html +++ b/ch9/os/syscall/input/fn.sys_key_pressed.html @@ -1,2 +1,3 @@ -sys_key_pressed in os::syscall::input - Rust

Function os::syscall::input::sys_key_pressed

source ·
pub fn sys_key_pressed() -> isize
Expand description

check UART’s read-buffer is empty or not

+sys_key_pressed in os::syscall::input - Rust +

Function os::syscall::input::sys_key_pressed

source ·
pub fn sys_key_pressed() -> isize
Expand description

check UART’s read-buffer is empty or not

\ No newline at end of file diff --git a/ch9/os/syscall/input/index.html b/ch9/os/syscall/input/index.html index 3d6c3d3a5..78b4eca1e 100644 --- a/ch9/os/syscall/input/index.html +++ b/ch9/os/syscall/input/index.html @@ -1 +1,2 @@ -os::syscall::input - Rust

Module os::syscall::input

source ·

Functions

\ No newline at end of file +os::syscall::input - Rust +

Module os::syscall::input

source ·

Functions

\ No newline at end of file diff --git a/ch9/os/syscall/net/fn.sys_accept.html b/ch9/os/syscall/net/fn.sys_accept.html index 6a4acedb9..65d118c65 100644 --- a/ch9/os/syscall/net/fn.sys_accept.html +++ b/ch9/os/syscall/net/fn.sys_accept.html @@ -1 +1,2 @@ -sys_accept in os::syscall::net - Rust

Function os::syscall::net::sys_accept

source ·
pub fn sys_accept(port_index: usize) -> isize
\ No newline at end of file +sys_accept in os::syscall::net - Rust +

Function os::syscall::net::sys_accept

source ·
pub fn sys_accept(port_index: usize) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/net/fn.sys_connect.html b/ch9/os/syscall/net/fn.sys_connect.html index f2221d982..eac4f6156 100644 --- a/ch9/os/syscall/net/fn.sys_connect.html +++ b/ch9/os/syscall/net/fn.sys_connect.html @@ -1 +1,2 @@ -sys_connect in os::syscall::net - Rust

Function os::syscall::net::sys_connect

source ·
pub fn sys_connect(raddr: u32, lport: u16, rport: u16) -> isize
\ No newline at end of file +sys_connect in os::syscall::net - Rust +

Function os::syscall::net::sys_connect

source ·
pub fn sys_connect(raddr: u32, lport: u16, rport: u16) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/net/fn.sys_listen.html b/ch9/os/syscall/net/fn.sys_listen.html index dfa90265b..e42da505f 100644 --- a/ch9/os/syscall/net/fn.sys_listen.html +++ b/ch9/os/syscall/net/fn.sys_listen.html @@ -1 +1,2 @@ -sys_listen in os::syscall::net - Rust

Function os::syscall::net::sys_listen

source ·
pub fn sys_listen(port: u16) -> isize
\ No newline at end of file +sys_listen in os::syscall::net - Rust +

Function os::syscall::net::sys_listen

source ·
pub fn sys_listen(port: u16) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/net/index.html b/ch9/os/syscall/net/index.html index 847396f66..989c94909 100644 --- a/ch9/os/syscall/net/index.html +++ b/ch9/os/syscall/net/index.html @@ -1 +1,2 @@ -os::syscall::net - Rust
\ No newline at end of file +os::syscall::net - Rust +
\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_exec.html b/ch9/os/syscall/process/fn.sys_exec.html index a2d6104f4..4a2f5da65 100644 --- a/ch9/os/syscall/process/fn.sys_exec.html +++ b/ch9/os/syscall/process/fn.sys_exec.html @@ -1 +1,2 @@ -sys_exec in os::syscall::process - Rust

Function os::syscall::process::sys_exec

source ·
pub fn sys_exec(path: *const u8, args: *const usize) -> isize
\ No newline at end of file +sys_exec in os::syscall::process - Rust +

Function os::syscall::process::sys_exec

source ·
pub fn sys_exec(path: *const u8, args: *const usize) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_exit.html b/ch9/os/syscall/process/fn.sys_exit.html index 81c6aa30b..4841498d4 100644 --- a/ch9/os/syscall/process/fn.sys_exit.html +++ b/ch9/os/syscall/process/fn.sys_exit.html @@ -1 +1,2 @@ -sys_exit in os::syscall::process - Rust

Function os::syscall::process::sys_exit

source ·
pub fn sys_exit(exit_code: i32) -> !
\ No newline at end of file +sys_exit in os::syscall::process - Rust +

Function os::syscall::process::sys_exit

source ·
pub fn sys_exit(exit_code: i32) -> !
\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_fork.html b/ch9/os/syscall/process/fn.sys_fork.html index da36e33f6..7958ccce2 100644 --- a/ch9/os/syscall/process/fn.sys_fork.html +++ b/ch9/os/syscall/process/fn.sys_fork.html @@ -1 +1,2 @@ -sys_fork in os::syscall::process - Rust

Function os::syscall::process::sys_fork

source ·
pub fn sys_fork() -> isize
\ No newline at end of file +sys_fork in os::syscall::process - Rust +

Function os::syscall::process::sys_fork

source ·
pub fn sys_fork() -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_get_time.html b/ch9/os/syscall/process/fn.sys_get_time.html index 16b734d31..fa6004636 100644 --- a/ch9/os/syscall/process/fn.sys_get_time.html +++ b/ch9/os/syscall/process/fn.sys_get_time.html @@ -1 +1,2 @@ -sys_get_time in os::syscall::process - Rust

Function os::syscall::process::sys_get_time

source ·
pub fn sys_get_time() -> isize
\ No newline at end of file +sys_get_time in os::syscall::process - Rust +

Function os::syscall::process::sys_get_time

source ·
pub fn sys_get_time() -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_getpid.html b/ch9/os/syscall/process/fn.sys_getpid.html index 9659fa530..0442ee35e 100644 --- a/ch9/os/syscall/process/fn.sys_getpid.html +++ b/ch9/os/syscall/process/fn.sys_getpid.html @@ -1 +1,2 @@ -sys_getpid in os::syscall::process - Rust

Function os::syscall::process::sys_getpid

source ·
pub fn sys_getpid() -> isize
\ No newline at end of file +sys_getpid in os::syscall::process - Rust +

Function os::syscall::process::sys_getpid

source ·
pub fn sys_getpid() -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_kill.html b/ch9/os/syscall/process/fn.sys_kill.html index 1efdaaab1..d8d9ec7c3 100644 --- a/ch9/os/syscall/process/fn.sys_kill.html +++ b/ch9/os/syscall/process/fn.sys_kill.html @@ -1 +1,2 @@ -sys_kill in os::syscall::process - Rust

Function os::syscall::process::sys_kill

source ·
pub fn sys_kill(pid: usize, signal: u32) -> isize
\ No newline at end of file +sys_kill in os::syscall::process - Rust +

Function os::syscall::process::sys_kill

source ·
pub fn sys_kill(pid: usize, signal: u32) -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_waitpid.html b/ch9/os/syscall/process/fn.sys_waitpid.html index 7c3f97219..9fbe9a185 100644 --- a/ch9/os/syscall/process/fn.sys_waitpid.html +++ b/ch9/os/syscall/process/fn.sys_waitpid.html @@ -1,3 +1,4 @@ -sys_waitpid in os::syscall::process - Rust

Function os::syscall::process::sys_waitpid

source ·
pub fn sys_waitpid(pid: isize, exit_code_ptr: *mut i32) -> isize
Expand description

If there is not a child process whose pid is same as given, return -1. +sys_waitpid in os::syscall::process - Rust

+

Function os::syscall::process::sys_waitpid

source ·
pub fn sys_waitpid(pid: isize, exit_code_ptr: *mut i32) -> isize
Expand description

If there is not a child process whose pid is same as given, return -1. Else if there is a child process but it is still running, return -2.

\ No newline at end of file diff --git a/ch9/os/syscall/process/fn.sys_yield.html b/ch9/os/syscall/process/fn.sys_yield.html index d0b69a066..a5c54bdf2 100644 --- a/ch9/os/syscall/process/fn.sys_yield.html +++ b/ch9/os/syscall/process/fn.sys_yield.html @@ -1 +1,2 @@ -sys_yield in os::syscall::process - Rust

Function os::syscall::process::sys_yield

source ·
pub fn sys_yield() -> isize
\ No newline at end of file +sys_yield in os::syscall::process - Rust +

Function os::syscall::process::sys_yield

source ·
pub fn sys_yield() -> isize
\ No newline at end of file diff --git a/ch9/os/syscall/process/index.html b/ch9/os/syscall/process/index.html index ea08e3725..acb2bdb67 100644 --- a/ch9/os/syscall/process/index.html +++ b/ch9/os/syscall/process/index.html @@ -1,2 +1,3 @@ -os::syscall::process - Rust

Module os::syscall::process

source ·

Functions

source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/fn.add_initproc.html b/ch9/os/task/fn.add_initproc.html index c030ba994..4c99ccd53 100644 --- a/ch9/os/task/fn.add_initproc.html +++ b/ch9/os/task/fn.add_initproc.html @@ -1 +1,2 @@ -add_initproc in os::task - Rust

Function os::task::add_initproc

source ·
pub fn add_initproc()
\ No newline at end of file +add_initproc in os::task - Rust +

Function os::task::add_initproc

source ·
pub fn add_initproc()
\ No newline at end of file diff --git a/ch9/os/task/fn.block_current_and_run_next.html b/ch9/os/task/fn.block_current_and_run_next.html index 868fb3998..3adde14d7 100644 --- a/ch9/os/task/fn.block_current_and_run_next.html +++ b/ch9/os/task/fn.block_current_and_run_next.html @@ -1 +1,2 @@ -block_current_and_run_next in os::task - Rust
pub fn block_current_and_run_next()
\ No newline at end of file +block_current_and_run_next in os::task - Rust +
pub fn block_current_and_run_next()
\ No newline at end of file diff --git a/ch9/os/task/fn.block_current_task.html b/ch9/os/task/fn.block_current_task.html index 47efe2a11..71e768894 100644 --- a/ch9/os/task/fn.block_current_task.html +++ b/ch9/os/task/fn.block_current_task.html @@ -1,2 +1,3 @@ -block_current_task in os::task - Rust

Function os::task::block_current_task

source ·
pub fn block_current_task() -> *mut TaskContext
Expand description

This function must be followed by a schedule

+block_current_task in os::task - Rust +

Function os::task::block_current_task

source ·
pub fn block_current_task() -> *mut TaskContext
Expand description

This function must be followed by a schedule

\ No newline at end of file diff --git a/ch9/os/task/fn.check_signals_of_current.html b/ch9/os/task/fn.check_signals_of_current.html index e23f2bb63..653e28288 100644 --- a/ch9/os/task/fn.check_signals_of_current.html +++ b/ch9/os/task/fn.check_signals_of_current.html @@ -1 +1,2 @@ -check_signals_of_current in os::task - Rust
pub fn check_signals_of_current() -> Option<(i32, &'static str)>
\ No newline at end of file +check_signals_of_current in os::task - Rust +
pub fn check_signals_of_current() -> Option<(i32, &'static str)>
\ No newline at end of file diff --git a/ch9/os/task/fn.current_add_signal.html b/ch9/os/task/fn.current_add_signal.html index 3e73f39e2..090ce714e 100644 --- a/ch9/os/task/fn.current_add_signal.html +++ b/ch9/os/task/fn.current_add_signal.html @@ -1 +1,2 @@ -current_add_signal in os::task - Rust

Function os::task::current_add_signal

source ·
pub fn current_add_signal(signal: SignalFlags)
\ No newline at end of file +current_add_signal in os::task - Rust +

Function os::task::current_add_signal

source ·
pub fn current_add_signal(signal: SignalFlags)
\ No newline at end of file diff --git a/ch9/os/task/fn.exit_current_and_run_next.html b/ch9/os/task/fn.exit_current_and_run_next.html index d04aa9da1..b3522aa22 100644 --- a/ch9/os/task/fn.exit_current_and_run_next.html +++ b/ch9/os/task/fn.exit_current_and_run_next.html @@ -1,2 +1,3 @@ -exit_current_and_run_next in os::task - Rust
pub fn exit_current_and_run_next(exit_code: i32)
Expand description

Exit the current ‘Running’ task and run the next task in task list.

+exit_current_and_run_next in os::task - Rust +
pub fn exit_current_and_run_next(exit_code: i32)
Expand description

Exit the current ‘Running’ task and run the next task in task list.

\ No newline at end of file diff --git a/ch9/os/task/fn.suspend_current_and_run_next.html b/ch9/os/task/fn.suspend_current_and_run_next.html index 10267c5a7..b4351d1f9 100644 --- a/ch9/os/task/fn.suspend_current_and_run_next.html +++ b/ch9/os/task/fn.suspend_current_and_run_next.html @@ -1 +1,2 @@ -suspend_current_and_run_next in os::task - Rust
pub fn suspend_current_and_run_next()
\ No newline at end of file +suspend_current_and_run_next in os::task - Rust +
pub fn suspend_current_and_run_next()
\ No newline at end of file diff --git a/ch9/os/task/id/constant.IDLE_PID.html b/ch9/os/task/id/constant.IDLE_PID.html index ea790f485..d42cbffe3 100644 --- a/ch9/os/task/id/constant.IDLE_PID.html +++ b/ch9/os/task/id/constant.IDLE_PID.html @@ -1 +1,2 @@ -IDLE_PID in os::task::id - Rust

Constant os::task::id::IDLE_PID

source ·
pub const IDLE_PID: usize = 0;
\ No newline at end of file +IDLE_PID in os::task::id - Rust +

Constant os::task::id::IDLE_PID

source ·
pub const IDLE_PID: usize = 0;
\ No newline at end of file diff --git a/ch9/os/task/id/fn.kernel_stack_position.html b/ch9/os/task/id/fn.kernel_stack_position.html index 740ae53e2..fd8f287b4 100644 --- a/ch9/os/task/id/fn.kernel_stack_position.html +++ b/ch9/os/task/id/fn.kernel_stack_position.html @@ -1,2 +1,3 @@ -kernel_stack_position in os::task::id - Rust

Function os::task::id::kernel_stack_position

source ·
pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize)
Expand description

Return (bottom, top) of a kernel stack in kernel space.

+kernel_stack_position in os::task::id - Rust +

Function os::task::id::kernel_stack_position

source ·
pub fn kernel_stack_position(kstack_id: usize) -> (usize, usize)
Expand description

Return (bottom, top) of a kernel stack in kernel space.

\ No newline at end of file diff --git a/ch9/os/task/id/fn.kstack_alloc.html b/ch9/os/task/id/fn.kstack_alloc.html index 388934b3f..89ec44b32 100644 --- a/ch9/os/task/id/fn.kstack_alloc.html +++ b/ch9/os/task/id/fn.kstack_alloc.html @@ -1 +1,2 @@ -kstack_alloc in os::task::id - Rust

Function os::task::id::kstack_alloc

source ·
pub fn kstack_alloc() -> KernelStack
\ No newline at end of file +kstack_alloc in os::task::id - Rust +

Function os::task::id::kstack_alloc

source ·
pub fn kstack_alloc() -> KernelStack
\ No newline at end of file diff --git a/ch9/os/task/id/fn.pid_alloc.html b/ch9/os/task/id/fn.pid_alloc.html index 60149a897..5c592db44 100644 --- a/ch9/os/task/id/fn.pid_alloc.html +++ b/ch9/os/task/id/fn.pid_alloc.html @@ -1 +1,2 @@ -pid_alloc in os::task::id - Rust

Function os::task::id::pid_alloc

source ·
pub fn pid_alloc() -> PidHandle
\ No newline at end of file +pid_alloc in os::task::id - Rust +

Function os::task::id::pid_alloc

source ·
pub fn pid_alloc() -> PidHandle
\ No newline at end of file diff --git a/ch9/os/task/id/fn.trap_cx_bottom_from_tid.html b/ch9/os/task/id/fn.trap_cx_bottom_from_tid.html index 8de4b40be..12a580e8f 100644 --- a/ch9/os/task/id/fn.trap_cx_bottom_from_tid.html +++ b/ch9/os/task/id/fn.trap_cx_bottom_from_tid.html @@ -1 +1,2 @@ -trap_cx_bottom_from_tid in os::task::id - Rust
fn trap_cx_bottom_from_tid(tid: usize) -> usize
\ No newline at end of file +trap_cx_bottom_from_tid in os::task::id - Rust +
fn trap_cx_bottom_from_tid(tid: usize) -> usize
\ No newline at end of file diff --git a/ch9/os/task/id/fn.ustack_bottom_from_tid.html b/ch9/os/task/id/fn.ustack_bottom_from_tid.html index 1f2da64b8..d49211364 100644 --- a/ch9/os/task/id/fn.ustack_bottom_from_tid.html +++ b/ch9/os/task/id/fn.ustack_bottom_from_tid.html @@ -1 +1,2 @@ -ustack_bottom_from_tid in os::task::id - Rust

Function os::task::id::ustack_bottom_from_tid

source ·
fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize
\ No newline at end of file +ustack_bottom_from_tid in os::task::id - Rust +

Function os::task::id::ustack_bottom_from_tid

source ·
fn ustack_bottom_from_tid(ustack_base: usize, tid: usize) -> usize
\ No newline at end of file diff --git a/ch9/os/task/id/index.html b/ch9/os/task/id/index.html index 03b550c3c..4a26a7cd6 100644 --- a/ch9/os/task/id/index.html +++ b/ch9/os/task/id/index.html @@ -1 +1,2 @@ -os::task::id - Rust
\ No newline at end of file +os::task::id - Rust +
\ No newline at end of file diff --git a/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html b/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html index ca79bda27..a0bdbc47a 100644 --- a/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html +++ b/ch9/os/task/id/struct.KSTACK_ALLOCATOR.html @@ -1,27 +1,28 @@ -KSTACK_ALLOCATOR in os::task::id - Rust

Struct os::task::id::KSTACK_ALLOCATOR

source ·
struct KSTACK_ALLOCATOR {
+KSTACK_ALLOCATOR in os::task::id - Rust
+    

Struct os::task::id::KSTACK_ALLOCATOR

source ·
struct KSTACK_ALLOCATOR {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for KSTACK_ALLOCATOR

§

type Target = UPIntrFreeCell<RecycleAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<RecycleAllocator>

Dereferences the value.
source§

impl LazyStatic for KSTACK_ALLOCATOR

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for KSTACK_ALLOCATOR

§

type Target = UPIntrFreeCell<RecycleAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<RecycleAllocator>

Dereferences the value.
source§

impl LazyStatic for KSTACK_ALLOCATOR

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/id/struct.KernelStack.html b/ch9/os/task/id/struct.KernelStack.html index 4dcb6e227..3965911c8 100644 --- a/ch9/os/task/id/struct.KernelStack.html +++ b/ch9/os/task/id/struct.KernelStack.html @@ -1,24 +1,25 @@ -KernelStack in os::task::id - Rust

Struct os::task::id::KernelStack

source ·
pub struct KernelStack(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl KernelStack

source

pub fn push_on_top<T>(&self, value: T) -> *mut Twhere - T: Sized,

source

pub fn get_top(&self) -> usize

Trait Implementations§

source§

impl Drop for KernelStack

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+KernelStack in os::task::id - Rust +

Struct os::task::id::KernelStack

source ·
pub struct KernelStack(pub usize);

Tuple Fields§

§0: usize

Implementations§

source§

impl KernelStack

source

pub fn push_on_top<T>(&self, value: T) -> *mut T
where + T: Sized,

source

pub fn get_top(&self) -> usize

Trait Implementations§

source§

impl Drop for KernelStack

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/id/struct.PID_ALLOCATOR.html b/ch9/os/task/id/struct.PID_ALLOCATOR.html index 46fedba0e..821d3633a 100644 --- a/ch9/os/task/id/struct.PID_ALLOCATOR.html +++ b/ch9/os/task/id/struct.PID_ALLOCATOR.html @@ -1,27 +1,28 @@ -PID_ALLOCATOR in os::task::id - Rust

Struct os::task::id::PID_ALLOCATOR

source ·
struct PID_ALLOCATOR {
+PID_ALLOCATOR in os::task::id - Rust
+    

Struct os::task::id::PID_ALLOCATOR

source ·
struct PID_ALLOCATOR {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for PID_ALLOCATOR

§

type Target = UPIntrFreeCell<RecycleAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<RecycleAllocator>

Dereferences the value.
source§

impl LazyStatic for PID_ALLOCATOR

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<RecycleAllocator>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for PID_ALLOCATOR

§

type Target = UPIntrFreeCell<RecycleAllocator>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<RecycleAllocator>

Dereferences the value.
source§

impl LazyStatic for PID_ALLOCATOR

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/id/struct.PidHandle.html b/ch9/os/task/id/struct.PidHandle.html index 38ce80486..430d0ea42 100644 --- a/ch9/os/task/id/struct.PidHandle.html +++ b/ch9/os/task/id/struct.PidHandle.html @@ -1,23 +1,24 @@ -PidHandle in os::task::id - Rust

Struct os::task::id::PidHandle

source ·
pub struct PidHandle(pub usize);

Tuple Fields§

§0: usize

Trait Implementations§

source§

impl Drop for PidHandle

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+PidHandle in os::task::id - Rust +

Struct os::task::id::PidHandle

source ·
pub struct PidHandle(pub usize);

Tuple Fields§

§0: usize

Trait Implementations§

source§

impl Drop for PidHandle

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/id/struct.RecycleAllocator.html b/ch9/os/task/id/struct.RecycleAllocator.html index a51a524c9..fd834bc0d 100644 --- a/ch9/os/task/id/struct.RecycleAllocator.html +++ b/ch9/os/task/id/struct.RecycleAllocator.html @@ -1,26 +1,27 @@ -RecycleAllocator in os::task::id - Rust

Struct os::task::id::RecycleAllocator

source ·
pub struct RecycleAllocator {
+RecycleAllocator in os::task::id - Rust
+    

Struct os::task::id::RecycleAllocator

source ·
pub struct RecycleAllocator {
     current: usize,
     recycled: Vec<usize>,
-}

Fields§

§current: usize§recycled: Vec<usize>

Implementations§

source§

impl RecycleAllocator

source

pub fn new() -> Self

source

pub fn alloc(&mut self) -> usize

source

pub fn dealloc(&mut self, id: usize)

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§current: usize§recycled: Vec<usize>

Implementations§

source§

impl RecycleAllocator

source

pub fn new() -> Self

source

pub fn alloc(&mut self) -> usize

source

pub fn dealloc(&mut self, id: usize)

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/id/struct.TaskUserRes.html b/ch9/os/task/id/struct.TaskUserRes.html index eda376b1e..30c72ef25 100644 --- a/ch9/os/task/id/struct.TaskUserRes.html +++ b/ch9/os/task/id/struct.TaskUserRes.html @@ -1,31 +1,32 @@ -TaskUserRes in os::task::id - Rust

Struct os::task::id::TaskUserRes

source ·
pub struct TaskUserRes {
+TaskUserRes in os::task::id - Rust
+    

Struct os::task::id::TaskUserRes

source ·
pub struct TaskUserRes {
     pub tid: usize,
     pub ustack_base: usize,
     pub process: Weak<ProcessControlBlock>,
-}

Fields§

§tid: usize§ustack_base: usize§process: Weak<ProcessControlBlock>

Implementations§

Fields§

§tid: usize§ustack_base: usize§process: Weak<ProcessControlBlock>

Implementations§

source§

impl TaskUserRes

source

pub fn new( process: Arc<ProcessControlBlock>, ustack_base: usize, alloc_user_res: bool -) -> Self

source

pub fn alloc_user_res(&self)

source

fn dealloc_user_res(&self)

source

pub fn alloc_tid(&mut self)

source

pub fn dealloc_tid(&self)

source

pub fn trap_cx_user_va(&self) -> usize

source

pub fn trap_cx_ppn(&self) -> PhysPageNum

source

pub fn ustack_base(&self) -> usize

source

pub fn ustack_top(&self) -> usize

Trait Implementations§

source§

impl Drop for TaskUserRes

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+) -> Self
source

pub fn alloc_user_res(&self)

source

fn dealloc_user_res(&self)

source

pub fn alloc_tid(&mut self)

source

pub fn dealloc_tid(&self)

source

pub fn trap_cx_user_va(&self) -> usize

source

pub fn trap_cx_ppn(&self) -> PhysPageNum

source

pub fn ustack_base(&self) -> usize

source

pub fn ustack_top(&self) -> usize

Trait Implementations§

source§

impl Drop for TaskUserRes

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/index.html b/ch9/os/task/index.html index faa31c62a..db7944bc6 100644 --- a/ch9/os/task/index.html +++ b/ch9/os/task/index.html @@ -1 +1,2 @@ -os::task - Rust

Module os::task

source ·

Re-exports

Modules

Structs

Functions

\ No newline at end of file +os::task - Rust +

Module os::task

source ·

Re-exports

Modules

Structs

Functions

\ No newline at end of file diff --git a/ch9/os/task/manager/fn.add_task.html b/ch9/os/task/manager/fn.add_task.html index 1cddc056c..bb7247cad 100644 --- a/ch9/os/task/manager/fn.add_task.html +++ b/ch9/os/task/manager/fn.add_task.html @@ -1 +1,2 @@ -add_task in os::task::manager - Rust

Function os::task::manager::add_task

source ·
pub fn add_task(task: Arc<TaskControlBlock>)
\ No newline at end of file +add_task in os::task::manager - Rust +

Function os::task::manager::add_task

source ·
pub fn add_task(task: Arc<TaskControlBlock>)
\ No newline at end of file diff --git a/ch9/os/task/manager/fn.fetch_task.html b/ch9/os/task/manager/fn.fetch_task.html index a89edd650..1a2297709 100644 --- a/ch9/os/task/manager/fn.fetch_task.html +++ b/ch9/os/task/manager/fn.fetch_task.html @@ -1 +1,2 @@ -fetch_task in os::task::manager - Rust

Function os::task::manager::fetch_task

source ·
pub fn fetch_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file +fetch_task in os::task::manager - Rust +

Function os::task::manager::fetch_task

source ·
pub fn fetch_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file diff --git a/ch9/os/task/manager/fn.insert_into_pid2process.html b/ch9/os/task/manager/fn.insert_into_pid2process.html index 038b32aed..2198f2bd3 100644 --- a/ch9/os/task/manager/fn.insert_into_pid2process.html +++ b/ch9/os/task/manager/fn.insert_into_pid2process.html @@ -1 +1,2 @@ -insert_into_pid2process in os::task::manager - Rust
pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>)
\ No newline at end of file +insert_into_pid2process in os::task::manager - Rust +
pub fn insert_into_pid2process(pid: usize, process: Arc<ProcessControlBlock>)
\ No newline at end of file diff --git a/ch9/os/task/manager/fn.pid2process.html b/ch9/os/task/manager/fn.pid2process.html index 2dc213856..694aac9b0 100644 --- a/ch9/os/task/manager/fn.pid2process.html +++ b/ch9/os/task/manager/fn.pid2process.html @@ -1 +1,2 @@ -pid2process in os::task::manager - Rust

Function os::task::manager::pid2process

source ·
pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>>
\ No newline at end of file +pid2process in os::task::manager - Rust +

Function os::task::manager::pid2process

source ·
pub fn pid2process(pid: usize) -> Option<Arc<ProcessControlBlock>>
\ No newline at end of file diff --git a/ch9/os/task/manager/fn.remove_from_pid2process.html b/ch9/os/task/manager/fn.remove_from_pid2process.html index 636b14887..09681e66a 100644 --- a/ch9/os/task/manager/fn.remove_from_pid2process.html +++ b/ch9/os/task/manager/fn.remove_from_pid2process.html @@ -1 +1,2 @@ -remove_from_pid2process in os::task::manager - Rust
pub fn remove_from_pid2process(pid: usize)
\ No newline at end of file +remove_from_pid2process in os::task::manager - Rust +
pub fn remove_from_pid2process(pid: usize)
\ No newline at end of file diff --git a/ch9/os/task/manager/fn.wakeup_task.html b/ch9/os/task/manager/fn.wakeup_task.html index 1d5c44cbc..d249394be 100644 --- a/ch9/os/task/manager/fn.wakeup_task.html +++ b/ch9/os/task/manager/fn.wakeup_task.html @@ -1 +1,2 @@ -wakeup_task in os::task::manager - Rust

Function os::task::manager::wakeup_task

source ·
pub fn wakeup_task(task: Arc<TaskControlBlock>)
\ No newline at end of file +wakeup_task in os::task::manager - Rust +

Function os::task::manager::wakeup_task

source ·
pub fn wakeup_task(task: Arc<TaskControlBlock>)
\ No newline at end of file diff --git a/ch9/os/task/manager/index.html b/ch9/os/task/manager/index.html index 62243d748..61ce0ada6 100644 --- a/ch9/os/task/manager/index.html +++ b/ch9/os/task/manager/index.html @@ -1 +1,2 @@ -os::task::manager - Rust
\ No newline at end of file +os::task::manager - Rust +
\ No newline at end of file diff --git a/ch9/os/task/manager/struct.PID2PCB.html b/ch9/os/task/manager/struct.PID2PCB.html index 827f586d2..54902cf38 100644 --- a/ch9/os/task/manager/struct.PID2PCB.html +++ b/ch9/os/task/manager/struct.PID2PCB.html @@ -1,27 +1,28 @@ -PID2PCB in os::task::manager - Rust

Struct os::task::manager::PID2PCB

source ·
pub struct PID2PCB {
+PID2PCB in os::task::manager - Rust
+    

Struct os::task::manager::PID2PCB

source ·
pub struct PID2PCB {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for PID2PCB

§

type Target = UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock, Global>, Global>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>

Dereferences the value.
source§

impl LazyStatic for PID2PCB

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for PID2PCB

§

type Target = UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<BTreeMap<usize, Arc<ProcessControlBlock>>>

Dereferences the value.
source§

impl LazyStatic for PID2PCB

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/manager/struct.TASK_MANAGER.html b/ch9/os/task/manager/struct.TASK_MANAGER.html index f6a55b48d..c94f12370 100644 --- a/ch9/os/task/manager/struct.TASK_MANAGER.html +++ b/ch9/os/task/manager/struct.TASK_MANAGER.html @@ -1,27 +1,28 @@ -TASK_MANAGER in os::task::manager - Rust

Struct os::task::manager::TASK_MANAGER

source ·
pub struct TASK_MANAGER {
+TASK_MANAGER in os::task::manager - Rust
+    

Struct os::task::manager::TASK_MANAGER

source ·
pub struct TASK_MANAGER {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<TaskManager>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for TASK_MANAGER

§

type Target = UPIntrFreeCell<TaskManager>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<TaskManager>

Dereferences the value.
source§

impl LazyStatic for TASK_MANAGER

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<TaskManager>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for TASK_MANAGER

§

type Target = UPIntrFreeCell<TaskManager>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<TaskManager>

Dereferences the value.
source§

impl LazyStatic for TASK_MANAGER

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/manager/struct.TaskManager.html b/ch9/os/task/manager/struct.TaskManager.html index e23f50687..cad3f3902 100644 --- a/ch9/os/task/manager/struct.TaskManager.html +++ b/ch9/os/task/manager/struct.TaskManager.html @@ -1,26 +1,27 @@ -TaskManager in os::task::manager - Rust

Struct os::task::manager::TaskManager

source ·
pub struct TaskManager {
+TaskManager in os::task::manager - Rust
+    

Struct os::task::manager::TaskManager

source ·
pub struct TaskManager {
     ready_queue: VecDeque<Arc<TaskControlBlock>>,
-}

Fields§

§ready_queue: VecDeque<Arc<TaskControlBlock>>

Implementations§

source§

impl TaskManager

A simple FIFO scheduler.

-
source

pub fn new() -> Self

source

pub fn add(&mut self, task: Arc<TaskControlBlock>)

source

pub fn fetch(&mut self) -> Option<Arc<TaskControlBlock>>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§ready_queue: VecDeque<Arc<TaskControlBlock>>

Implementations§

source§

impl TaskManager

A simple FIFO scheduler.

+
source

pub fn new() -> Self

source

pub fn add(&mut self, task: Arc<TaskControlBlock>)

source

pub fn fetch(&mut self) -> Option<Arc<TaskControlBlock>>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/process/index.html b/ch9/os/task/process/index.html index fe218e00f..9cb0277ea 100644 --- a/ch9/os/task/process/index.html +++ b/ch9/os/task/process/index.html @@ -1 +1,2 @@ -os::task::process - Rust
\ No newline at end of file +os::task::process - Rust +
\ No newline at end of file diff --git a/ch9/os/task/process/struct.ProcessControlBlock.html b/ch9/os/task/process/struct.ProcessControlBlock.html index e9ad7248f..7c5d273f7 100644 --- a/ch9/os/task/process/struct.ProcessControlBlock.html +++ b/ch9/os/task/process/struct.ProcessControlBlock.html @@ -1,30 +1,31 @@ -ProcessControlBlock in os::task::process - Rust
pub struct ProcessControlBlock {
+ProcessControlBlock in os::task::process - Rust
+    

Fields§

§pid: PidHandle§inner: UPIntrFreeCell<ProcessControlBlockInner>

Implementations§

source§

impl ProcessControlBlock

source

pub fn inner_exclusive_access( &self ) -> UPIntrRefMut<'_, ProcessControlBlockInner>

source

pub fn new(elf_data: &[u8]) -> Arc<Self>

source

pub fn exec(self: &Arc<Self>, elf_data: &[u8], args: Vec<String>)

Only support processes with a single thread.

source

pub fn fork(self: &Arc<Self>) -> Arc<Self>

Only support processes with a single thread.

-
source

pub fn getpid(&self) -> usize

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+
source

pub fn getpid(&self) -> usize

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/process/struct.ProcessControlBlockInner.html b/ch9/os/task/process/struct.ProcessControlBlockInner.html index 30e7cc505..f3be5c683 100644 --- a/ch9/os/task/process/struct.ProcessControlBlockInner.html +++ b/ch9/os/task/process/struct.ProcessControlBlockInner.html @@ -1,4 +1,5 @@ -ProcessControlBlockInner in os::task::process - Rust
pub struct ProcessControlBlockInner {
+ProcessControlBlockInner in os::task::process - Rust
+    
pub struct ProcessControlBlockInner {
     pub is_zombie: bool,
     pub memory_set: MemorySet,
     pub parent: Option<Weak<ProcessControlBlock>>,
@@ -11,26 +12,26 @@
     pub mutex_list: Vec<Option<Arc<dyn Mutex>>>,
     pub semaphore_list: Vec<Option<Arc<Semaphore>>>,
     pub condvar_list: Vec<Option<Arc<Condvar>>>,
-}

Fields§

§is_zombie: bool§memory_set: MemorySet§parent: Option<Weak<ProcessControlBlock>>§children: Vec<Arc<ProcessControlBlock>>§exit_code: i32§fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>§signals: SignalFlags§tasks: Vec<Option<Arc<TaskControlBlock>>>§task_res_allocator: RecycleAllocator§mutex_list: Vec<Option<Arc<dyn Mutex>>>§semaphore_list: Vec<Option<Arc<Semaphore>>>§condvar_list: Vec<Option<Arc<Condvar>>>

Implementations§

source§

impl ProcessControlBlockInner

source

pub fn get_user_token(&self) -> usize

source

pub fn alloc_fd(&mut self) -> usize

source

pub fn alloc_tid(&mut self) -> usize

source

pub fn dealloc_tid(&mut self, tid: usize)

source

pub fn thread_count(&self) -> usize

source

pub fn get_task(&self, tid: usize) -> Arc<TaskControlBlock>

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§is_zombie: bool§memory_set: MemorySet§parent: Option<Weak<ProcessControlBlock>>§children: Vec<Arc<ProcessControlBlock>>§exit_code: i32§fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>§signals: SignalFlags§tasks: Vec<Option<Arc<TaskControlBlock>>>§task_res_allocator: RecycleAllocator§mutex_list: Vec<Option<Arc<dyn Mutex>>>§semaphore_list: Vec<Option<Arc<Semaphore>>>§condvar_list: Vec<Option<Arc<Condvar>>>

Implementations§

source§

impl ProcessControlBlockInner

source

pub fn get_user_token(&self) -> usize

source

pub fn alloc_fd(&mut self) -> usize

source

pub fn alloc_tid(&mut self) -> usize

source

pub fn dealloc_tid(&mut self, tid: usize)

source

pub fn thread_count(&self) -> usize

source

pub fn get_task(&self, tid: usize) -> Arc<TaskControlBlock>

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.current_kstack_top.html b/ch9/os/task/processor/fn.current_kstack_top.html index 617d01c08..1af76a1ee 100644 --- a/ch9/os/task/processor/fn.current_kstack_top.html +++ b/ch9/os/task/processor/fn.current_kstack_top.html @@ -1 +1,2 @@ -current_kstack_top in os::task::processor - Rust
pub fn current_kstack_top() -> usize
\ No newline at end of file +current_kstack_top in os::task::processor - Rust +
pub fn current_kstack_top() -> usize
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.current_process.html b/ch9/os/task/processor/fn.current_process.html index d058ae5a0..529f5d0be 100644 --- a/ch9/os/task/processor/fn.current_process.html +++ b/ch9/os/task/processor/fn.current_process.html @@ -1 +1,2 @@ -current_process in os::task::processor - Rust

Function os::task::processor::current_process

source ·
pub fn current_process() -> Arc<ProcessControlBlock>
\ No newline at end of file +current_process in os::task::processor - Rust +

Function os::task::processor::current_process

source ·
pub fn current_process() -> Arc<ProcessControlBlock>
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.current_task.html b/ch9/os/task/processor/fn.current_task.html index e852ac66c..e79aafd28 100644 --- a/ch9/os/task/processor/fn.current_task.html +++ b/ch9/os/task/processor/fn.current_task.html @@ -1 +1,2 @@ -current_task in os::task::processor - Rust

Function os::task::processor::current_task

source ·
pub fn current_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file +current_task in os::task::processor - Rust +

Function os::task::processor::current_task

source ·
pub fn current_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.current_trap_cx.html b/ch9/os/task/processor/fn.current_trap_cx.html index 0407270ab..483ddbecb 100644 --- a/ch9/os/task/processor/fn.current_trap_cx.html +++ b/ch9/os/task/processor/fn.current_trap_cx.html @@ -1 +1,2 @@ -current_trap_cx in os::task::processor - Rust

Function os::task::processor::current_trap_cx

source ·
pub fn current_trap_cx() -> &'static mut TrapContext
\ No newline at end of file +current_trap_cx in os::task::processor - Rust +

Function os::task::processor::current_trap_cx

source ·
pub fn current_trap_cx() -> &'static mut TrapContext
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.current_trap_cx_user_va.html b/ch9/os/task/processor/fn.current_trap_cx_user_va.html index 0d6059570..926c9e935 100644 --- a/ch9/os/task/processor/fn.current_trap_cx_user_va.html +++ b/ch9/os/task/processor/fn.current_trap_cx_user_va.html @@ -1 +1,2 @@ -current_trap_cx_user_va in os::task::processor - Rust
pub fn current_trap_cx_user_va() -> usize
\ No newline at end of file +current_trap_cx_user_va in os::task::processor - Rust +
pub fn current_trap_cx_user_va() -> usize
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.current_user_token.html b/ch9/os/task/processor/fn.current_user_token.html index dc7d7cbf6..743416df3 100644 --- a/ch9/os/task/processor/fn.current_user_token.html +++ b/ch9/os/task/processor/fn.current_user_token.html @@ -1 +1,2 @@ -current_user_token in os::task::processor - Rust
pub fn current_user_token() -> usize
\ No newline at end of file +current_user_token in os::task::processor - Rust +
pub fn current_user_token() -> usize
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.run_tasks.html b/ch9/os/task/processor/fn.run_tasks.html index f781ce4f8..3e1c959bd 100644 --- a/ch9/os/task/processor/fn.run_tasks.html +++ b/ch9/os/task/processor/fn.run_tasks.html @@ -1 +1,2 @@ -run_tasks in os::task::processor - Rust

Function os::task::processor::run_tasks

source ·
pub fn run_tasks()
\ No newline at end of file +run_tasks in os::task::processor - Rust +

Function os::task::processor::run_tasks

source ·
pub fn run_tasks()
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.schedule.html b/ch9/os/task/processor/fn.schedule.html index a825e0098..f37e54bb3 100644 --- a/ch9/os/task/processor/fn.schedule.html +++ b/ch9/os/task/processor/fn.schedule.html @@ -1 +1,2 @@ -schedule in os::task::processor - Rust

Function os::task::processor::schedule

source ·
pub fn schedule(switched_task_cx_ptr: *mut TaskContext)
\ No newline at end of file +schedule in os::task::processor - Rust +

Function os::task::processor::schedule

source ·
pub fn schedule(switched_task_cx_ptr: *mut TaskContext)
\ No newline at end of file diff --git a/ch9/os/task/processor/fn.take_current_task.html b/ch9/os/task/processor/fn.take_current_task.html index c34505e18..11251d59b 100644 --- a/ch9/os/task/processor/fn.take_current_task.html +++ b/ch9/os/task/processor/fn.take_current_task.html @@ -1 +1,2 @@ -take_current_task in os::task::processor - Rust
pub fn take_current_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file +take_current_task in os::task::processor - Rust +
pub fn take_current_task() -> Option<Arc<TaskControlBlock>>
\ No newline at end of file diff --git a/ch9/os/task/processor/index.html b/ch9/os/task/processor/index.html index db81b8c72..918cedad7 100644 --- a/ch9/os/task/processor/index.html +++ b/ch9/os/task/processor/index.html @@ -1 +1,2 @@ -os::task::processor - Rust
\ No newline at end of file +os::task::processor - Rust +
\ No newline at end of file diff --git a/ch9/os/task/processor/struct.PROCESSOR.html b/ch9/os/task/processor/struct.PROCESSOR.html index 765a50d3d..f93fb0c96 100644 --- a/ch9/os/task/processor/struct.PROCESSOR.html +++ b/ch9/os/task/processor/struct.PROCESSOR.html @@ -1,27 +1,28 @@ -PROCESSOR in os::task::processor - Rust

Struct os::task::processor::PROCESSOR

source ·
pub struct PROCESSOR {
+PROCESSOR in os::task::processor - Rust
+    

Struct os::task::processor::PROCESSOR

source ·
pub struct PROCESSOR {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Processor>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for PROCESSOR

§

type Target = UPIntrFreeCell<Processor>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Processor>

Dereferences the value.
source§

impl LazyStatic for PROCESSOR

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<Processor>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for PROCESSOR

§

type Target = UPIntrFreeCell<Processor>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<Processor>

Dereferences the value.
source§

impl LazyStatic for PROCESSOR

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/processor/struct.Processor.html b/ch9/os/task/processor/struct.Processor.html index 0a712d877..344c9fb21 100644 --- a/ch9/os/task/processor/struct.Processor.html +++ b/ch9/os/task/processor/struct.Processor.html @@ -1,26 +1,27 @@ -Processor in os::task::processor - Rust

Struct os::task::processor::Processor

source ·
pub struct Processor {
+Processor in os::task::processor - Rust
+    

Struct os::task::processor::Processor

source ·
pub struct Processor {
     current: Option<Arc<TaskControlBlock>>,
     idle_task_cx: TaskContext,
-}

Fields§

§current: Option<Arc<TaskControlBlock>>§idle_task_cx: TaskContext

Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§current: Option<Arc<TaskControlBlock>>§idle_task_cx: TaskContext

Implementations§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/signal/index.html b/ch9/os/task/signal/index.html index 7dfb974e7..df548f85b 100644 --- a/ch9/os/task/signal/index.html +++ b/ch9/os/task/signal/index.html @@ -1 +1,2 @@ -os::task::signal - Rust
\ No newline at end of file +os::task::signal - Rust +
\ No newline at end of file diff --git a/ch9/os/task/signal/struct.SignalFlags.html b/ch9/os/task/signal/struct.SignalFlags.html index b8e591650..aeda9dc2d 100644 --- a/ch9/os/task/signal/struct.SignalFlags.html +++ b/ch9/os/task/signal/struct.SignalFlags.html @@ -1,6 +1,7 @@ -SignalFlags in os::task::signal - Rust

Struct os::task::signal::SignalFlags

source ·
pub struct SignalFlags {
+SignalFlags in os::task::signal - Rust
+    

Struct os::task::signal::SignalFlags

source ·
pub struct SignalFlags {
     bits: u32,
-}

Fields§

§bits: u32

Implementations§

source§

impl SignalFlags

source

pub const SIGINT: Self = _

source

pub const SIGILL: Self = _

source

pub const SIGABRT: Self = _

source

pub const SIGFPE: Self = _

source

pub const SIGSEGV: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

+}

Fields§

§bits: u32

Implementations§

source§

impl SignalFlags

source

pub const SIGINT: Self = _

source

pub const SIGILL: Self = _

source

pub const SIGABRT: Self = _

source

pub const SIGFPE: Self = _

source

pub const SIGSEGV: Self = _

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u32

Returns the raw value of the flags currently stored.

source

pub const fn from_bits(bits: u32) -> Option<Self>

Convert from underlying bit representation, unless that @@ -58,45 +59,45 @@

Safety
between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

-
source§

impl SignalFlags

source

pub fn check_error(&self) -> Option<(i32, &'static str)>

Trait Implementations§

source§

impl Binary for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd<SignalFlags> for SignalFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

-
§

type Output = SignalFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign<SignalFlags> for SignalFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

-
source§

impl BitOr<SignalFlags> for SignalFlags

source§

fn bitor(self, other: SignalFlags) -> Self

Returns the union of the two sets of flags.

-
§

type Output = SignalFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign<SignalFlags> for SignalFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

-
source§

impl BitXor<SignalFlags> for SignalFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

-
§

type Output = SignalFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign<SignalFlags> for SignalFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

-
source§

impl Clone for SignalFlags

source§

fn clone(&self) -> SignalFlags

Returns a copy 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 SignalFlags

source§

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

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

impl Extend<SignalFlags> for SignalFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<SignalFlags> for SignalFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for SignalFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

source§

impl SignalFlags

source

pub fn check_error(&self) -> Option<(i32, &'static str)>

Trait Implementations§

source§

impl Binary for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl BitAnd for SignalFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

+
§

type Output = SignalFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for SignalFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

+
source§

impl BitOr for SignalFlags

source§

fn bitor(self, other: SignalFlags) -> Self

Returns the union of the two sets of flags.

+
§

type Output = SignalFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for SignalFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

+
source§

impl BitXor for SignalFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

+
§

type Output = SignalFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for SignalFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

+
source§

impl Clone for SignalFlags

source§

fn clone(&self) -> SignalFlags

Returns a copy 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 SignalFlags

source§

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

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

impl Extend<SignalFlags> for SignalFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<SignalFlags> for SignalFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for SignalFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for SignalFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

-
§

type Output = SignalFlags

The resulting type after applying the ! operator.
source§

impl Octal for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for SignalFlags

source§

fn cmp(&self, other: &SignalFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<SignalFlags> for SignalFlags

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<SignalFlags> for SignalFlags

source§

fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Sub<SignalFlags> for SignalFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

-
§

type Output = SignalFlags

The resulting type after applying the - operator.
source§

impl SubAssign<SignalFlags> for SignalFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

-
source§

impl UpperHex for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for SignalFlags

source§

impl Eq for SignalFlags

source§

impl StructuralEq for SignalFlags

source§

impl StructuralPartialEq for SignalFlags

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ Self: Sized,
Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Not for SignalFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

+
§

type Output = SignalFlags

The resulting type after applying the ! operator.
source§

impl Octal for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Ord for SignalFlags

source§

fn cmp(&self, other: &SignalFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for SignalFlags

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for SignalFlags

source§

fn partial_cmp(&self, other: &SignalFlags) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Sub for SignalFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

+
§

type Output = SignalFlags

The resulting type after applying the - operator.
source§

impl SubAssign for SignalFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

+
source§

impl UpperHex for SignalFlags

source§

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

Formats the value using the given formatter.
source§

impl Copy for SignalFlags

source§

impl Eq for SignalFlags

source§

impl StructuralEq for SignalFlags

source§

impl StructuralPartialEq for SignalFlags

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/struct.INITPROC.html b/ch9/os/task/struct.INITPROC.html index 9f70c3c4a..9ad20186a 100644 --- a/ch9/os/task/struct.INITPROC.html +++ b/ch9/os/task/struct.INITPROC.html @@ -1,25 +1,26 @@ -INITPROC in os::task - Rust

Struct os::task::INITPROC

source ·
pub struct INITPROC {
+INITPROC in os::task - Rust
+    

Struct os::task::INITPROC

source ·
pub struct INITPROC {
     __private_field: (),
-}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for INITPROC

§

type Target = Arc<ProcessControlBlock, Global>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<ProcessControlBlock>

Dereferences the value.
source§

impl LazyStatic for INITPROC

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Trait Implementations§

source§

impl Deref for INITPROC

§

type Target = Arc<ProcessControlBlock>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Arc<ProcessControlBlock>

Dereferences the value.
source§

impl LazyStatic for INITPROC

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/switch/fn.__switch.html b/ch9/os/task/switch/fn.__switch.html index bd1024d64..f49f6cbdf 100644 --- a/ch9/os/task/switch/fn.__switch.html +++ b/ch9/os/task/switch/fn.__switch.html @@ -1,4 +1,5 @@ -__switch in os::task::switch - Rust

Function os::task::switch::__switch

source ·
pub unsafe extern "C" fn __switch(
+__switch in os::task::switch - Rust
+    

Function os::task::switch::__switch

source ·
pub unsafe extern "C" fn __switch(
     current_task_cx_ptr: *mut TaskContext,
     next_task_cx_ptr: *const TaskContext
 )
\ No newline at end of file diff --git a/ch9/os/task/switch/index.html b/ch9/os/task/switch/index.html index 47f65a9de..08314e856 100644 --- a/ch9/os/task/switch/index.html +++ b/ch9/os/task/switch/index.html @@ -1 +1,2 @@ -os::task::switch - Rust
\ No newline at end of file +os::task::switch - Rust +
\ No newline at end of file diff --git a/ch9/os/task/task/enum.TaskStatus.html b/ch9/os/task/task/enum.TaskStatus.html index 2bb73a3d1..d4c4da45a 100644 --- a/ch9/os/task/task/enum.TaskStatus.html +++ b/ch9/os/task/task/enum.TaskStatus.html @@ -1,30 +1,31 @@ -TaskStatus in os::task::task - Rust

Enum os::task::task::TaskStatus

source ·
pub enum TaskStatus {
+TaskStatus in os::task::task - Rust
+    

Enum os::task::task::TaskStatus

source ·
pub enum TaskStatus {
     Ready,
     Running,
     Blocked,
-}

Variants§

§

Ready

§

Running

§

Blocked

Trait Implementations§

source§

impl Clone for TaskStatus

source§

fn clone(&self) -> TaskStatus

Returns a copy 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 PartialEq<TaskStatus> for TaskStatus

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for TaskStatus

source§

impl StructuralPartialEq for TaskStatus

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Variants§

§

Ready

§

Running

§

Blocked

Trait Implementations§

source§

impl Clone for TaskStatus

source§

fn clone(&self) -> TaskStatus

Returns a copy 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 PartialEq for TaskStatus

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Copy for TaskStatus

source§

impl StructuralPartialEq for TaskStatus

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> ToOwned for Twhere - T: Clone,

§

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 Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/task/index.html b/ch9/os/task/task/index.html index 00c7853b0..5b1852f34 100644 --- a/ch9/os/task/task/index.html +++ b/ch9/os/task/task/index.html @@ -1 +1,2 @@ -os::task::task - Rust
\ No newline at end of file +os::task::task - Rust +
\ No newline at end of file diff --git a/ch9/os/task/task/struct.TaskControlBlock.html b/ch9/os/task/task/struct.TaskControlBlock.html index a683afd72..af08f406f 100644 --- a/ch9/os/task/task/struct.TaskControlBlock.html +++ b/ch9/os/task/task/struct.TaskControlBlock.html @@ -1,31 +1,32 @@ -TaskControlBlock in os::task::task - Rust

Struct os::task::task::TaskControlBlock

source ·
pub struct TaskControlBlock {
+TaskControlBlock in os::task::task - Rust
+    

Fields§

§process: Weak<ProcessControlBlock>§kstack: KernelStack§inner: UPIntrFreeCell<TaskControlBlockInner>

Implementations§

source§

impl TaskControlBlock

source§

impl TaskControlBlock

source

pub fn new( process: Arc<ProcessControlBlock>, ustack_base: usize, alloc_user_res: bool -) -> Self

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+) -> Self

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/task/task/struct.TaskControlBlockInner.html b/ch9/os/task/task/struct.TaskControlBlockInner.html index e740b073f..79fe479ef 100644 --- a/ch9/os/task/task/struct.TaskControlBlockInner.html +++ b/ch9/os/task/task/struct.TaskControlBlockInner.html @@ -1,29 +1,30 @@ -TaskControlBlockInner in os::task::task - Rust
pub struct TaskControlBlockInner {
+TaskControlBlockInner in os::task::task - Rust
+    
pub struct TaskControlBlockInner {
     pub res: Option<TaskUserRes>,
     pub trap_cx_ppn: PhysPageNum,
     pub task_cx: TaskContext,
     pub task_status: TaskStatus,
     pub exit_code: Option<i32>,
-}

Fields§

§res: Option<TaskUserRes>§trap_cx_ppn: PhysPageNum§task_cx: TaskContext§task_status: TaskStatus§exit_code: Option<i32>

Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§res: Option<TaskUserRes>§trap_cx_ppn: PhysPageNum§task_cx: TaskContext§task_status: TaskStatus§exit_code: Option<i32>

Implementations§

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/timer/constant.MSEC_PER_SEC.html b/ch9/os/timer/constant.MSEC_PER_SEC.html index bd5c07867..e82b6e65c 100644 --- a/ch9/os/timer/constant.MSEC_PER_SEC.html +++ b/ch9/os/timer/constant.MSEC_PER_SEC.html @@ -1 +1,2 @@ -MSEC_PER_SEC in os::timer - Rust

Constant os::timer::MSEC_PER_SEC

source ·
const MSEC_PER_SEC: usize = 1000;
\ No newline at end of file +MSEC_PER_SEC in os::timer - Rust +

Constant os::timer::MSEC_PER_SEC

source ·
const MSEC_PER_SEC: usize = 1000;
\ No newline at end of file diff --git a/ch9/os/timer/constant.TICKS_PER_SEC.html b/ch9/os/timer/constant.TICKS_PER_SEC.html index 6fd602c3c..9de84457f 100644 --- a/ch9/os/timer/constant.TICKS_PER_SEC.html +++ b/ch9/os/timer/constant.TICKS_PER_SEC.html @@ -1 +1,2 @@ -TICKS_PER_SEC in os::timer - Rust

Constant os::timer::TICKS_PER_SEC

source ·
const TICKS_PER_SEC: usize = 100;
\ No newline at end of file +TICKS_PER_SEC in os::timer - Rust +

Constant os::timer::TICKS_PER_SEC

source ·
const TICKS_PER_SEC: usize = 100;
\ No newline at end of file diff --git a/ch9/os/timer/fn.add_timer.html b/ch9/os/timer/fn.add_timer.html index 9939f2984..fa414d6ef 100644 --- a/ch9/os/timer/fn.add_timer.html +++ b/ch9/os/timer/fn.add_timer.html @@ -1 +1,2 @@ -add_timer in os::timer - Rust

Function os::timer::add_timer

source ·
pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>)
\ No newline at end of file +add_timer in os::timer - Rust +

Function os::timer::add_timer

source ·
pub fn add_timer(expire_ms: usize, task: Arc<TaskControlBlock>)
\ No newline at end of file diff --git a/ch9/os/timer/fn.check_timer.html b/ch9/os/timer/fn.check_timer.html index d0a8a02bb..d69ae4383 100644 --- a/ch9/os/timer/fn.check_timer.html +++ b/ch9/os/timer/fn.check_timer.html @@ -1 +1,2 @@ -check_timer in os::timer - Rust

Function os::timer::check_timer

source ·
pub fn check_timer()
\ No newline at end of file +check_timer in os::timer - Rust +

Function os::timer::check_timer

source ·
pub fn check_timer()
\ No newline at end of file diff --git a/ch9/os/timer/fn.get_time.html b/ch9/os/timer/fn.get_time.html index 2ba601599..c7ea1f924 100644 --- a/ch9/os/timer/fn.get_time.html +++ b/ch9/os/timer/fn.get_time.html @@ -1 +1,2 @@ -get_time in os::timer - Rust

Function os::timer::get_time

source ·
pub fn get_time() -> usize
\ No newline at end of file +get_time in os::timer - Rust +

Function os::timer::get_time

source ·
pub fn get_time() -> usize
\ No newline at end of file diff --git a/ch9/os/timer/fn.get_time_ms.html b/ch9/os/timer/fn.get_time_ms.html index cacad1501..8cc7776ef 100644 --- a/ch9/os/timer/fn.get_time_ms.html +++ b/ch9/os/timer/fn.get_time_ms.html @@ -1 +1,2 @@ -get_time_ms in os::timer - Rust

Function os::timer::get_time_ms

source ·
pub fn get_time_ms() -> usize
\ No newline at end of file +get_time_ms in os::timer - Rust +

Function os::timer::get_time_ms

source ·
pub fn get_time_ms() -> usize
\ No newline at end of file diff --git a/ch9/os/timer/fn.set_next_trigger.html b/ch9/os/timer/fn.set_next_trigger.html index 0bcb73ce6..6cd66fd78 100644 --- a/ch9/os/timer/fn.set_next_trigger.html +++ b/ch9/os/timer/fn.set_next_trigger.html @@ -1 +1,2 @@ -set_next_trigger in os::timer - Rust

Function os::timer::set_next_trigger

source ·
pub fn set_next_trigger()
\ No newline at end of file +set_next_trigger in os::timer - Rust +

Function os::timer::set_next_trigger

source ·
pub fn set_next_trigger()
\ No newline at end of file diff --git a/ch9/os/timer/index.html b/ch9/os/timer/index.html index 36734568f..1ea2a2777 100644 --- a/ch9/os/timer/index.html +++ b/ch9/os/timer/index.html @@ -1 +1,2 @@ -os::timer - Rust
\ No newline at end of file +os::timer - Rust +
\ No newline at end of file diff --git a/ch9/os/timer/struct.TIMERS.html b/ch9/os/timer/struct.TIMERS.html index 225f3f9cf..fff5310ee 100644 --- a/ch9/os/timer/struct.TIMERS.html +++ b/ch9/os/timer/struct.TIMERS.html @@ -1,27 +1,28 @@ -TIMERS in os::timer - Rust

Struct os::timer::TIMERS

source ·
struct TIMERS {
+TIMERS in os::timer - Rust
+    

Struct os::timer::TIMERS

source ·
struct TIMERS {
     __private_field: (),
-}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<BinaryHeap<TimerCondVar>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

-
source

pub fn exclusive_session<F, V>(&self, f: F) -> Vwhere - F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for TIMERS

§

type Target = UPIntrFreeCell<BinaryHeap<TimerCondVar, Global>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<BinaryHeap<TimerCondVar>>

Dereferences the value.
source§

impl LazyStatic for TIMERS

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§__private_field: ()

Methods from Deref<Target = UPIntrFreeCell<BinaryHeap<TimerCondVar>>>§

source

pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T>

Panic if the data has been borrowed.

+
source

pub fn exclusive_session<F, V>(&self, f: F) -> V
where + F: FnOnce(&mut T) -> V,

Trait Implementations§

source§

impl Deref for TIMERS

§

type Target = UPIntrFreeCell<BinaryHeap<TimerCondVar>>

The resulting type after dereferencing.
source§

fn deref(&self) -> &UPIntrFreeCell<BinaryHeap<TimerCondVar>>

Dereferences the value.
source§

impl LazyStatic for TIMERS

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/timer/struct.TimerCondVar.html b/ch9/os/timer/struct.TimerCondVar.html index 34942c954..83745322f 100644 --- a/ch9/os/timer/struct.TimerCondVar.html +++ b/ch9/os/timer/struct.TimerCondVar.html @@ -1,33 +1,34 @@ -TimerCondVar in os::timer - Rust

Struct os::timer::TimerCondVar

source ·
pub struct TimerCondVar {
+TimerCondVar in os::timer - Rust
+    

Struct os::timer::TimerCondVar

source ·
pub struct TimerCondVar {
     pub expire_ms: usize,
     pub task: Arc<TaskControlBlock>,
-}

Fields§

§expire_ms: usize§task: Arc<TaskControlBlock>

Trait Implementations§

source§

impl Ord for TimerCondVar

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere - Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere - Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<TimerCondVar> for TimerCondVar

source§

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

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<TimerCondVar> for TimerCondVar

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
source§

impl Eq for TimerCondVar

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+}

Fields§

§expire_ms: usize§task: Arc<TaskControlBlock>

Trait Implementations§

source§

impl Ord for TimerCondVar

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for TimerCondVar

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for TimerCondVar

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Eq for TimerCondVar

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/trap/context/index.html b/ch9/os/trap/context/index.html index a15c7bcd8..8378b4462 100644 --- a/ch9/os/trap/context/index.html +++ b/ch9/os/trap/context/index.html @@ -1 +1,2 @@ -os::trap::context - Rust
\ No newline at end of file +os::trap::context - Rust +
\ No newline at end of file diff --git a/ch9/os/trap/context/struct.TrapContext.html b/ch9/os/trap/context/struct.TrapContext.html index 41da07084..eb964f541 100644 --- a/ch9/os/trap/context/struct.TrapContext.html +++ b/ch9/os/trap/context/struct.TrapContext.html @@ -1,36 +1,37 @@ -TrapContext in os::trap::context - Rust

Struct os::trap::context::TrapContext

source ·
#[repr(C)]
pub struct TrapContext { +TrapContext in os::trap::context - Rust +

Struct os::trap::context::TrapContext

source ·
#[repr(C)]
pub struct TrapContext { pub x: [usize; 32], pub sstatus: Sstatus, pub sepc: usize, pub kernel_satp: usize, pub kernel_sp: usize, pub trap_handler: usize, -}

Fields§

§x: [usize; 32]§sstatus: Sstatus§sepc: usize§kernel_satp: usize§kernel_sp: usize§trap_handler: usize

Implementations§

source§

impl TrapContext

source

pub fn set_sp(&mut self, sp: usize)

source

pub fn app_init_context( +}

Fields§

§x: [usize; 32]§sstatus: Sstatus§sepc: usize§kernel_satp: usize§kernel_sp: usize§trap_handler: usize

Implementations§

source§

impl TrapContext

source

pub fn set_sp(&mut self, sp: usize)

source

pub fn app_init_context( entry: usize, sp: usize, kernel_satp: usize, kernel_sp: usize, trap_handler: usize -) -> Self

Trait Implementations§

source§

impl Debug for TrapContext

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dstwhere - T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for Twhere - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere - T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dstwhere - Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>where - T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere - Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for Twhere - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+) -> Self

Trait Implementations§

source§

impl Debug for TrapContext

source§

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

Formats the value using the given formatter. Read more

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> Az for T

source§

fn az<Dst>(self) -> Dst
where + T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where + Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where + T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where + Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)where - T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere - Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dstwhere - T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere - Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

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 Twhere - U: TryFrom<T>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dstwhere - T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere - Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dstwhere - T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere - Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file +
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where + T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where + Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where + T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where + Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
source§

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

§

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>,

§

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<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where + T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where + Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where + T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where + Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
\ No newline at end of file diff --git a/ch9/os/trap/fn.disable_supervisor_interrupt.html b/ch9/os/trap/fn.disable_supervisor_interrupt.html index 6edd41d52..76cc44aee 100644 --- a/ch9/os/trap/fn.disable_supervisor_interrupt.html +++ b/ch9/os/trap/fn.disable_supervisor_interrupt.html @@ -1 +1,2 @@ -disable_supervisor_interrupt in os::trap - Rust
fn disable_supervisor_interrupt()
\ No newline at end of file +disable_supervisor_interrupt in os::trap - Rust +
fn disable_supervisor_interrupt()
\ No newline at end of file diff --git a/ch9/os/trap/fn.enable_supervisor_interrupt.html b/ch9/os/trap/fn.enable_supervisor_interrupt.html index 454627c2b..a26f18843 100644 --- a/ch9/os/trap/fn.enable_supervisor_interrupt.html +++ b/ch9/os/trap/fn.enable_supervisor_interrupt.html @@ -1 +1,2 @@ -enable_supervisor_interrupt in os::trap - Rust
fn enable_supervisor_interrupt()
\ No newline at end of file +enable_supervisor_interrupt in os::trap - Rust +
fn enable_supervisor_interrupt()
\ No newline at end of file diff --git a/ch9/os/trap/fn.enable_timer_interrupt.html b/ch9/os/trap/fn.enable_timer_interrupt.html index 80d8150a0..391642405 100644 --- a/ch9/os/trap/fn.enable_timer_interrupt.html +++ b/ch9/os/trap/fn.enable_timer_interrupt.html @@ -1 +1,2 @@ -enable_timer_interrupt in os::trap - Rust
pub fn enable_timer_interrupt()
\ No newline at end of file +enable_timer_interrupt in os::trap - Rust +
pub fn enable_timer_interrupt()
\ No newline at end of file diff --git a/ch9/os/trap/fn.init.html b/ch9/os/trap/fn.init.html index 331da8d3c..7c851b757 100644 --- a/ch9/os/trap/fn.init.html +++ b/ch9/os/trap/fn.init.html @@ -1 +1,2 @@ -init in os::trap - Rust

Function os::trap::init

source ·
pub fn init()
\ No newline at end of file +init in os::trap - Rust +

Function os::trap::init

source ·
pub fn init()
\ No newline at end of file diff --git a/ch9/os/trap/fn.set_kernel_trap_entry.html b/ch9/os/trap/fn.set_kernel_trap_entry.html index 4fd5b6cc6..7681f0f36 100644 --- a/ch9/os/trap/fn.set_kernel_trap_entry.html +++ b/ch9/os/trap/fn.set_kernel_trap_entry.html @@ -1 +1,2 @@ -set_kernel_trap_entry in os::trap - Rust

Function os::trap::set_kernel_trap_entry

source ·
fn set_kernel_trap_entry()
\ No newline at end of file +set_kernel_trap_entry in os::trap - Rust +

Function os::trap::set_kernel_trap_entry

source ·
fn set_kernel_trap_entry()
\ No newline at end of file diff --git a/ch9/os/trap/fn.set_user_trap_entry.html b/ch9/os/trap/fn.set_user_trap_entry.html index 664614c42..45ea8cff4 100644 --- a/ch9/os/trap/fn.set_user_trap_entry.html +++ b/ch9/os/trap/fn.set_user_trap_entry.html @@ -1 +1,2 @@ -set_user_trap_entry in os::trap - Rust

Function os::trap::set_user_trap_entry

source ·
fn set_user_trap_entry()
\ No newline at end of file +set_user_trap_entry in os::trap - Rust +

Function os::trap::set_user_trap_entry

source ·
fn set_user_trap_entry()
\ No newline at end of file diff --git a/ch9/os/trap/fn.trap_from_kernel.html b/ch9/os/trap/fn.trap_from_kernel.html index f1a8f2dc1..607223add 100644 --- a/ch9/os/trap/fn.trap_from_kernel.html +++ b/ch9/os/trap/fn.trap_from_kernel.html @@ -1,2 +1,3 @@ -trap_from_kernel in os::trap - Rust

Function os::trap::trap_from_kernel

source ·
#[no_mangle]
+trap_from_kernel in os::trap - Rust
+    

Function os::trap::trap_from_kernel

source ·
#[no_mangle]
 pub fn trap_from_kernel(_trap_cx: &TrapContext)
\ No newline at end of file diff --git a/ch9/os/trap/fn.trap_handler.html b/ch9/os/trap/fn.trap_handler.html index ddc15bc3f..731253523 100644 --- a/ch9/os/trap/fn.trap_handler.html +++ b/ch9/os/trap/fn.trap_handler.html @@ -1,2 +1,3 @@ -trap_handler in os::trap - Rust

Function os::trap::trap_handler

source ·
#[no_mangle]
+trap_handler in os::trap - Rust
+    

Function os::trap::trap_handler

source ·
#[no_mangle]
 pub fn trap_handler() -> !
\ No newline at end of file diff --git a/ch9/os/trap/fn.trap_return.html b/ch9/os/trap/fn.trap_return.html index 025928d65..187bb06d7 100644 --- a/ch9/os/trap/fn.trap_return.html +++ b/ch9/os/trap/fn.trap_return.html @@ -1,2 +1,3 @@ -trap_return in os::trap - Rust

Function os::trap::trap_return

source ·
#[no_mangle]
+trap_return in os::trap - Rust
+    

Function os::trap::trap_return

source ·
#[no_mangle]
 pub fn trap_return() -> !
\ No newline at end of file diff --git a/ch9/os/trap/index.html b/ch9/os/trap/index.html index 3347e4c8e..903c56457 100644 --- a/ch9/os/trap/index.html +++ b/ch9/os/trap/index.html @@ -1 +1,2 @@ -os::trap - Rust
\ No newline at end of file +os::trap - Rust +
\ No newline at end of file diff --git a/ch9/search-index.js b/ch9/search-index.js index 1ca735499..dae4e5b0d 100644 --- a/ch9/search-index.js +++ b/ch9/search-index.js @@ -1,5 +1,5 @@ -var searchIndex = JSON.parse('{\ -"os":{"doc":"","t":"DMLALLLLLFAALALALAAALLOOFLLAAAAAALLLLLLLGRGRRRRRMMFMFMCRRRCRRRRRDLLLLLLLLLLFLLLLLLLLLLCCCCAAAAAAADCMLFLLLLLLLLLLLLLLLLLALLRDLLLLLLMLLLLLLLLLLLLLLMLLLADDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLICDMLLLLLLLLKKLALLKLLLLLLLLLKSSSSDDDDDDSSDSSDMMMMLLLLLLLLLLLMLLLLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMLLMLLLLLLLLLLLLLLLLLLLLLLLMMMMMMLLLLLMLLLLLLLLLLLLLLLLLLLMLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLHDIRDMLLLLLLLLLLLLLMKLLLKLMLLLLLLLLLLLLLLLLLLLLLKLLLLLIDDRRDDMMLLLLLLLLLLLLLLLLLLLLLLLLMLLMLLLLKLMLLLLKLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLDIRDMLLLLLLLLLLLLLLLLLLLLLLKLLLLLKLLLLLLLLLLLLLLLENDNLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLICCCCCCCACCCAKKAKKSDDDSSDSSMLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLFLLMFLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLNNNDDRELMLLLLLLLLLLLMLLLLLLLLLLLLLLLMLLLFLLLLLLLLLLLMLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLMLLMLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFCCCCCCCCCCCCCCCCCACCACAFCAACCCCCRRDDDDIRGRDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDIGDDMKLKLLLLLLLLLLLLLLLLLLLMMKLLLMMLFFFFFLLLLFLLLKLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLHHFFFNNDNDDEDSSSSMLLMLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLFFFLLLFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLMLMLLLLLLLLLLLLLLMLLLFLLLLLLLLLLLLFFLFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLSSSDDDSSDDSSSLLLLLLLLLLLMMLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLFLLLLLLLLALLLLLLAALLLLLLLLLLLLLALLLLLLLLLLLLDDDMFFLLLLLLLLLLLLFLLLLLLLLLLLLLLFLLLLLLLMFLLMLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLDDMMFLLLLLLMLLLLLLLLLFFLLMLLLLFFMFMLLLLMFLLLLLLLLLLLLLLDMLLLLLLMLLLLLLLLLLMMMMLLLLLLLLLDLLLLLLMLLLLLLLLLLMMMLLLLLLLLLFFCCCCCCCAAAADDLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLMLLLLLIDDDLLLLLLLLLLLLLLLLLLLLLMLLLKLLMMLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLMLLLLLLDDLLLLLLLLLLLLMLLLMLLLLLLLLLLLLLLLLLLLLLLMLLLLDDDDDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLMLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRAAAAAAFAFFFFFFRFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCCCCCCMFCLFFLLLFLLAFCCCCCCLFLALCALLCCAACCLLCAFACALLLLLCLLDLLLLLLLLLLLMMLLMLLLLLLLLRDDDDDDMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLFFLLLLLLLLLLLLLLFMLMLLLLLLLLLLLLMFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMFLLLLLLLLLLLLLDDDMMLFLLLLLLLLLLLLLLLLLLLLLFLLLFLLLLLLLLLLFMFLLLLLLLLLLLLLLLLLLLLLFLLLLLLDDLLLLLLLLLLLLLLMMLLMMLLLLLLMLLLMMMLLLLLMMLLLLMMMMLLLLLLLLLLLLLLLDDMLLLLLLLLLLLLLMFFFFFFLLLLMLLLLLLLFLLLLFLFLLLLLLLLLLLLLLSSSSSDLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFNNNDDELLLLLLLLLLLLLLLLLLLLLMLLLLLLMLLLLMLLLLLLLMMLLLLLLMMLMLLLLLLLLLLLLLLLLLLLLLRRDDMFLLLLLLLLFLLLLLLLMLLFFLLLLLLLLLLLFMLLLLLLLLLLLLLLCAFFFFFFFFFDLLLLLLLLLLMMLLLLMLMMLLLLLLLM","n":["DEV_NON_BLOCKING_ACCESS","__private_field","az","board","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","clear_bss","config","console","deref","drivers","from","fs","into","lang_items","mm","net","overflowing_as","overflowing_cast_from","print","println","rust_main","saturating_as","saturating_cast_from","sbi","sync","syscall","task","timer","trap","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","BlockDeviceImpl","CLOCK_FREQ","CharDeviceImpl","MMIO","VIRTGPU_XRES","VIRTGPU_YRES","VIRT_PLIC","VIRT_UART","condvar","condvars","device_init","inner","irq_handler","virtio_blk","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","into","overflowing_as","overflowing_cast_from","print","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","write_str","BLOCK_DEVICE","BLOCK_DEVICE","UART","UART","block","bus","chardev","gpu","input","net","plic","BLOCK_DEVICE","VirtIOBlock","__private_field","az","block_device_test","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","into","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","VIRTIO0","VirtIOBlock","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","condvars","from","handle_irq","into","new","overflowing_as","overflowing_cast_from","read_block","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","write_block","virtio","QUEUE_FRAMES","VirtioHal","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","dma_alloc","dma_dealloc","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","phys_to_virt","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","virt_to_phys","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","CharDevice","NS16550a","UART","__private_field","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","handle_irq","init","into","ns16550a","overflowing_as","overflowing_cast_from","read","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","write","AUX_OUTPUT1","AUX_OUTPUT2","DATA_AVAILABLE","DATA_TERMINAL_READY","IER","LSR","MCR","NS16550a","NS16550aInner","NS16550aRaw","REQUEST_TO_SEND","RX_AVAILABLE","ReadWithoutDLAB","THR_EMPTY","TX_EMPTY","WriteWithoutDLAB","_padding0","_padding1","_padding1","_padding2","all","all","all","az","az","az","az","az","az","az","az","base_addr","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","complement","complement","complement","condvar","contains","contains","contains","difference","difference","difference","empty","empty","empty","eq","eq","eq","extend","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_iter","from_iter","from_iter","handle_irq","hash","hash","hash","ier","ier","iir","init","init","inner","insert","insert","insert","intersection","intersection","intersection","intersects","intersects","intersects","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_empty","is_empty","is_empty","lcr","lcr","lsr","lsr","mcr","mcr","new","new","not","not","not","ns16550a","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","partial_cmp","partial_cmp","rbr","read","read","read_buffer","read_buffer_is_empty","read_end","remove","remove","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","set","set","set","sub","sub","sub","sub_assign","sub_assign","sub_assign","symmetric_difference","symmetric_difference","symmetric_difference","thr","to_owned","to_owned","to_owned","toggle","toggle","toggle","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","union","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","write","write","write_end","BMP_DATA","GPU_DEVICE","GpuDevice","VIRTIO7","VirtIOGpuWrapper","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","fb","flush","flush","from","from","get_framebuffer","get_framebuffer","gpu","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","update_cursor","update_cursor","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","InputDevice","KEYBOARD_DEVICE","MOUSE_DEVICE","VIRTIO5","VIRTIO6","VirtIOInputInner","VirtIOInputWrapper","__private_field","__private_field","az","az","az","az","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","condvar","deref","deref","events","from","from","from","from","handle_irq","handle_irq","inner","into","into","into","into","is_empty","is_empty","new","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","read_event","read_event","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","virtio_input","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","NET_DEVICE","NetDevice","VIRTIO8","VirtIONetWrapper","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","from","from","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","receive","receive","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","transmit","transmit","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","IntrTargetPriority","Machine","PLIC","Supervisor","az","az","base_addr","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","claim","claim_comp_ptr_of_hart_with_priority","clone","clone_into","complete","disable","enable","enable_ptr","from","from","get_priority","get_threshold","hart_id_with_priority","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","priority_ptr","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","set_priority","set_threshold","supported_number","threshold_ptr_of_hart_with_priority","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","File","OSInode","OpenFlags","Pipe","ROOT_INODE","ROOT_INODE","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","read","read_all","read_write","readable","readable","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","read","read_byte","read_end_with_buffer","readable","readable","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","read","read","readable","readable","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","UserBufferIterator","VPNRange","VirtAddr","VirtPageNum","address","frame_alloc","frame_alloc_more","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","remap_test","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","ceil","ceil","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","draw","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","l","new","new","next","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","r","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","translated","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","alloc_more","alloc_more","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_alloc_more","frame_allocator_alloc_more_test","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","ppn","recycled","recycled","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","Linear","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","az","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","vpn_range","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","az","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","ppn","readable","remove","root_ppn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","IPv4","LOSE_NET_STACK","NetStack","__private_field","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","deref","eq","fmt","fmt","from","from","from","from_u32","hexdump","into","into","into","net_interrupt_handler","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","port_table","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","socket","tcp","to_owned","to_string","to_string","to_u32","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","udp","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","LISTEN_TABLE","Port","PortFd","__private_field","accept","accept_connection","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","check_accept","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","drop","from","from","from","into","into","into","listen","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","port","port_acceptable","read","readable","receivable","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","schedule","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","write","SOCKET_TABLE","Socket","__private_field","ack","add_socket","az","az","borrow","borrow","borrow_mut","borrow_mut","buffers","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","from","from","get_s_a_by_index","get_socket","into","into","lport","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","pop_data","push_data","raddr","remove_socket","rport","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","seq","set_s_a_by_index","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","TCP","ack","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","dport","drop","from","into","new","overflowing_as","overflowing_cast_from","read","readable","saturating_as","saturating_cast_from","seq","socket_index","sport","target","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","writable","write","UDP","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","dport","drop","from","into","new","overflowing_as","overflowing_cast_from","read","readable","saturating_as","saturating_cast_from","socket_index","sport","target","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","writable","write","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPIntrFreeCell","UPIntrRefMut","condvar","mutex","semaphore","up","Condvar","CondvarInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","signal","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wait_no_sched","wait_queue","wait_with_mutex","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wait_queue","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","Semaphore","SemaphoreInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","count","down","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","up","wait_queue","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","INTR_MASKING_INFO","IntrMaskingInfo","UPIntrFreeCell","UPIntrRefMut","UPSafeCellRaw","__private_field","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","deref_mut","drop","enter","exclusive_access","exclusive_session","exit","from","from","from","from","from","get_mut","inner","inner","into","into","into","into","into","nested_level","new","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","sie_before_masking","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","SYSCALL_ACCEPT","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_CONNECT","SYSCALL_DUP","SYSCALL_EVENT_GET","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_FRAMEBUFFER","SYSCALL_FRAMEBUFFER_FLUSH","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KEY_PRESSED","SYSCALL_KILL","SYSCALL_LISTEN","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","gui","input","net","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","FB_VADDR","sys_framebuffer","sys_framebuffer_flush","sys_event_get","sys_key_pressed","sys_accept","sys_connect","sys_listen","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","az","block_current_and_run_next","block_current_task","borrow","borrow_mut","cast_from","check_signals_of_current","checked_as","checked_cast_from","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","overflowing_as","overflowing_cast_from","pid2process","pid_alloc","process","processor","remove_from_pid2process","run_tasks","saturating_as","saturating_cast_from","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wakeup_task","wrapping_as","wrapping_cast_from","TaskContext","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","goto_trap_return","into","overflowing_as","overflowing_cast_from","ra","s","saturating_as","saturating_cast_from","sp","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid_alloc","process","push_on_top","recycled","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid2process","ready_queue","remove_from_pid2process","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wakeup_task","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","parent","pid","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","PROCESSOR","Processor","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","run_tasks","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","cast_from","check_error","checked_as","checked_cast_from","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","overflowing_as","overflowing_cast_from","partial_cmp","remove","saturating_as","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","process","res","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","check_timer","checked_as","checked_as","checked_cast_from","checked_cast_from","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","partial_cmp","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","TrapContext","context","disable_supervisor_interrupt","enable_supervisor_interrupt","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","fmt","from","into","kernel_satp","kernel_sp","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","x"],"q":[[0,"os"],[40,"os::board"],[54,"os::config"],[64,"os::console"],[86,"os::drivers"],[97,"os::drivers::block"],[122,"os::drivers::block::virtio_blk"],[149,"os::drivers::bus"],[150,"os::drivers::bus::virtio"],[196,"os::drivers::chardev"],[225,"os::drivers::chardev::ns16550a"],[554,"os::drivers::gpu"],[608,"os::drivers::input"],[706,"os::drivers::net"],[755,"os::drivers::plic"],[816,"os::fs"],[834,"os::fs::inode"],[978,"os::fs::pipe"],[1068,"os::fs::stdio"],[1116,"os::lang_items"],[1118,"os::mm"],[1150,"os::mm::address"],[1347,"os::mm::frame_allocator"],[1436,"os::mm::heap_allocator"],[1441,"os::mm::memory_set"],[1635,"os::mm::page_table"],[1822,"os::net"],[1902,"os::net::port_table"],[1978,"os::net::socket"],[2033,"os::net::tcp"],[2065,"os::net::udp"],[2095,"os::sbi"],[2097,"os::sync"],[2108,"os::sync::condvar"],[2154,"os::sync::mutex"],[2227,"os::sync::semaphore"],[2273,"os::sync::up"],[2390,"os::syscall"],[2432,"os::syscall::fs"],[2438,"os::syscall::gui"],[2441,"os::syscall::input"],[2443,"os::syscall::net"],[2446,"os::syscall::process"],[2454,"os::syscall::sync"],[2464,"os::syscall::thread"],[2467,"os::task"],[2526,"os::task::context"],[2551,"os::task::id"],[2703,"os::task::manager"],[2777,"os::task::process"],[2842,"os::task::processor"],[2899,"os::task::signal"],[2968,"os::task::switch"],[2969,"os::task::task"],[3049,"os::timer"],[3103,"os::trap"],[3114,"os::trap::context"],[3143,"core::option"],[3144,"core::result"],[3145,"core::any"],[3146,"core::fmt"],[3147,"core::fmt"],[3148,"alloc::sync"],[3149,"alloc::vec"],[3150,"core::cmp"],[3151,"core::iter::traits::collect"],[3152,"core::fmt"],[3153,"easy_fs::vfs"],[3154,"core::panic::panic_info"],[3155,"core::marker"],[3156,"core::cmp"],[3157,"embedded_graphics_core::draw_target"],[3158,"embedded_graphics_core::geometry::point"],[3159,"embedded_graphics::iterator::pixel"],[3160,"core::alloc::layout"],[3161,"alloc::string"],[3162,"core::fmt"],[3163,"core::ops::function"],[3164,"core::marker"],[3165,"alloc::collections::binary_heap"]],"d":["","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","InterruptEnableRegister","LineStatusRegister","Model Control Register","","","","","","","","","","ignore FCR","ignore MSR","ignore other registers","ignore SCR","Returns the set containing all flags.","Returns the set containing all flags.","Returns the set containing all flags.","","","","","","","","","","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Adds the set of flags.","Adds the set of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","","","","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Toggles the set of flags.","Toggles the set of flags.","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns an empty set of flags.","Returns an empty set of flags.","Returns an empty set of flags.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","","","","","","","","interrupt enable register","interrupt enable register","interrupt identification register","","","","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","line control register","line control register","line status register","line status register","model control register","modem control register","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","","","","","","","","","","","","","","","","","","","","receiver buffer register","","","","","","Removes the specified flags in-place.","Removes the specified flags in-place.","Removes the specified flags in-place.","","","","","","","","","","","","","","","","","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","transmitter holding register","","","","Toggles the specified flags in-place.","Toggles the specified flags in-place.","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","","","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","Returns the complement of this set of flags.","","","","","","","","","","","","","","Do not check validity for simplicity Return (readable, …","","","Removes the specified flags in-place.","","","","","","","","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (read_end, write_end)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Definitions","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","offset of page num","","","","","","","","","","","Returns the set containing all flags.","","","","","","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","data: start-aligned but maybe with shorter length assume …","","","Returns the difference between the flags in self and other.","","","","Returns an empty set of flags.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Include sections in elf and trampoline, also returns …","","","","Inserts the specified flags in-place.","Assume that no conflicts.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","Mention that trampoline is not collected by areas.","","","","Without kernel stacks.","Returns the complement of this set of flags.","","","","","","","","","","","","","Add a new MapArea into this MemorySet. Assuming that there …","","","Removes the specified flags in-place.","","","","","","","","","","","","","","Inserts or removes the specified flags depending on the …","","","","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","","","","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","Temporarily used to get arguments from user space.","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","","","","Returns the complement of this set of flags.","","","","","","","","","","","","","","Removes the specified flags in-place.","","","","","","","","","","","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","Load a string from other address spaces into kernel space …","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","get the seq and ack by socket index","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","use sbi call to set timer","use sbi call to shutdown the kernel","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Panic if the data has been borrowed.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","inner data","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","check UART’s read-buffer is empty or not","","","","","","","","","","If there is not a child process whose pid is same as …","","","","","","","","","","","","","","thread does not exist, return -1 thread has not exited …","","","","","","","","","","","","","","This function must be followed by a schedule","","","","","","","","","","","","","","","","Exit the current ‘Running’ task and run the next task …","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (bottom, top) of a kernel stack in kernel space.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Only support processes with a single thread.","","","Only support processes with a single thread.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Returns the complement of this set of flags.","","","","Removes the specified flags in-place.","","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","",""],"i":[0,3,3,0,3,3,3,3,3,0,0,0,3,0,3,0,3,0,0,0,3,3,0,0,0,3,3,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,139,140,0,139,0,140,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,13,13,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,20,141,20,141,20,141,20,141,20,141,20,141,20,20,141,141,141,20,141,20,141,20,141,20,141,141,20,141,20,141,20,141,20,141,20,141,20,141,20,141,141,20,141,20,0,0,0,24,24,24,24,24,24,24,24,24,142,142,24,0,24,24,142,24,24,24,24,24,24,24,24,24,142,28,28,27,28,0,0,0,0,0,0,28,26,0,27,26,0,35,34,35,34,26,27,28,34,35,33,143,25,26,27,28,33,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,25,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,26,26,26,26,26,27,27,27,27,27,28,28,28,28,28,34,35,33,143,25,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,25,26,27,28,34,35,34,33,25,25,26,27,28,26,27,28,26,27,28,34,35,33,143,25,26,27,28,26,27,28,26,27,28,34,35,34,35,34,35,33,25,26,27,28,143,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,26,27,28,34,33,25,143,25,33,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,26,27,28,26,27,28,26,27,28,26,27,28,35,26,27,28,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,34,35,33,143,25,26,27,28,33,25,33,0,0,0,0,0,36,38,36,38,36,38,36,38,36,38,36,38,36,36,38,37,38,38,36,37,38,38,38,36,38,38,36,38,36,38,36,38,36,38,36,38,36,38,36,38,36,38,36,37,38,38,36,38,36,0,0,0,0,0,0,0,39,41,144,42,39,41,144,42,39,41,144,42,39,41,144,42,39,41,144,42,39,41,144,42,39,41,42,39,41,144,144,42,39,41,40,42,42,144,42,39,41,40,42,42,144,42,39,41,144,42,39,41,40,42,144,42,39,41,144,42,39,41,144,42,39,41,144,42,39,41,144,42,39,41,144,42,39,41,144,42,39,41,144,144,42,39,41,144,42,39,41,0,0,0,0,44,46,44,46,44,46,44,46,44,46,44,46,44,44,46,44,46,44,46,46,44,46,44,45,46,46,44,46,44,45,46,46,44,46,44,46,44,46,44,46,44,46,44,46,44,0,48,0,48,47,48,47,47,48,47,48,47,48,47,48,47,48,47,47,48,48,47,47,47,47,47,48,47,47,47,47,48,47,47,48,47,48,47,47,48,47,48,47,47,48,47,48,47,48,47,48,47,48,47,48,47,48,47,48,47,48,0,0,0,0,0,0,0,0,0,0,0,0,0,145,145,0,145,145,51,0,0,0,51,51,0,51,51,52,51,54,146,52,51,51,51,51,51,51,51,51,51,54,146,52,51,54,146,52,51,54,146,52,51,54,146,52,51,54,146,52,51,51,51,51,51,51,52,51,51,51,51,51,51,51,51,51,54,146,52,51,51,51,51,51,51,54,146,51,51,51,54,146,52,51,51,51,0,54,51,146,0,54,146,52,51,54,146,52,51,51,54,54,51,54,54,51,54,146,52,51,54,146,52,51,51,51,51,51,51,51,54,146,52,51,54,146,52,51,54,146,52,51,51,54,146,52,51,54,146,52,51,54,146,52,51,54,146,52,51,54,54,54,56,56,56,0,0,0,0,55,55,55,55,57,55,56,57,55,56,57,55,56,57,57,55,56,57,55,56,57,55,56,56,56,56,57,55,56,55,57,55,56,0,55,57,55,56,57,55,56,57,55,57,57,57,57,55,56,57,55,56,55,55,55,56,57,55,56,57,55,56,57,55,56,57,55,56,57,55,56,57,55,56,57,55,56,57,57,57,55,55,57,0,0,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,58,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,62,75,61,62,63,64,65,75,61,62,63,64,65,75,61,62,63,64,65,75,61,62,63,64,65,61,62,75,61,62,63,64,65,75,61,62,63,64,65,61,62,63,64,65,61,62,63,64,65,61,62,63,64,75,75,75,61,62,63,64,61,62,61,62,63,64,75,61,61,61,62,62,62,63,63,63,64,64,64,65,63,65,61,63,63,61,65,64,75,61,62,63,64,65,75,65,147,65,75,65,75,75,61,62,63,64,65,75,61,62,63,64,65,61,62,61,62,63,64,147,65,75,61,62,63,64,65,75,61,62,63,64,65,66,63,64,61,62,63,64,65,75,75,61,62,63,64,65,75,61,62,63,64,65,75,61,62,63,64,65,75,61,62,63,64,65,75,61,62,63,64,65,75,61,62,63,64,65,75,61,62,63,64,65,0,0,0,0,0,79,148,78,148,78,21,78,79,21,78,79,21,78,79,21,78,79,21,78,79,21,78,79,78,149,148,78,79,21,78,149,21,0,0,0,0,0,21,78,79,78,0,21,78,79,148,21,78,21,78,79,21,78,79,21,78,149,21,78,79,21,78,79,21,78,79,21,78,79,21,78,79,21,78,79,21,78,79,21,78,79,21,78,79,0,0,0,0,0,83,83,0,83,0,0,0,0,82,82,82,82,86,81,82,81,81,84,86,83,82,82,82,82,82,82,82,82,82,81,84,86,83,82,81,84,86,83,82,81,84,86,83,82,81,84,86,83,82,81,84,86,83,82,83,82,83,82,82,82,82,84,84,86,82,0,0,0,82,83,82,0,0,82,83,82,82,82,82,82,81,84,86,83,82,84,82,82,82,81,81,82,82,82,81,82,82,81,84,86,83,82,82,82,0,84,84,84,81,84,84,81,81,82,81,84,86,83,82,81,84,86,83,82,81,82,81,81,0,82,81,81,84,86,83,82,81,84,86,83,82,0,0,82,0,0,0,82,82,82,83,82,82,81,81,81,84,86,83,82,81,84,86,83,82,81,84,86,83,82,82,84,84,81,84,86,83,82,81,84,86,83,82,84,81,84,86,83,82,81,84,86,83,82,87,87,87,0,0,0,87,87,0,0,87,87,87,87,85,50,88,87,73,87,87,87,87,87,87,73,87,87,85,50,88,87,73,85,50,88,87,73,50,88,85,50,88,87,73,85,50,88,87,73,85,50,88,87,73,87,73,87,73,87,87,87,88,88,87,87,73,87,73,87,85,85,73,87,87,87,87,87,85,85,50,88,87,73,87,87,87,87,85,87,87,87,87,85,50,88,87,73,50,88,87,87,73,50,85,85,50,73,88,87,85,50,88,87,73,85,50,88,87,73,87,73,73,87,85,85,50,88,87,73,85,50,88,87,73,87,87,87,87,87,73,87,85,85,85,0,0,0,0,85,50,88,87,73,85,50,88,87,73,85,50,88,87,73,87,85,85,50,88,87,73,85,50,88,87,73,85,50,88,87,73,85,50,88,87,73,73,0,0,0,91,90,92,91,90,92,91,90,92,91,90,92,91,90,92,91,90,92,91,90,90,91,90,90,90,90,92,91,90,0,90,92,91,0,90,92,90,92,91,90,92,91,0,90,92,91,90,92,91,0,0,90,90,90,90,90,92,91,90,92,91,90,92,91,0,90,92,91,90,92,91,90,92,91,90,92,91,0,0,0,97,0,0,98,99,97,98,99,97,98,99,97,98,99,97,0,98,99,97,98,99,97,97,99,98,99,97,98,99,97,0,99,98,99,97,98,99,97,98,0,99,99,98,98,99,97,98,99,97,98,98,99,97,98,99,97,98,99,97,98,99,97,98,99,97,98,99,97,98,99,97,99,99,0,0,100,101,0,101,100,101,100,101,100,101,101,100,101,100,101,100,100,101,100,0,0,101,100,101,101,100,101,100,0,0,101,0,101,101,100,101,100,101,0,101,100,101,100,101,100,101,100,101,100,101,100,101,100,0,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,0,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,150,104,150,104,150,104,150,104,150,104,150,104,150,104,104,150,104,104,150,104,150,104,150,104,150,104,104,150,104,150,104,150,104,150,104,150,104,150,104,104,150,104,150,0,0,0,0,107,108,151,107,108,151,107,108,151,107,108,151,107,108,151,107,108,151,107,108,151,108,107,108,151,106,107,108,107,151,107,108,107,108,151,107,108,151,107,108,151,107,108,151,107,108,151,107,108,151,107,108,151,106,107,108,107,108,151,107,108,151,151,107,108,151,107,108,151,0,0,109,152,109,152,109,152,109,152,109,152,109,152,152,109,109,152,109,109,152,109,109,152,109,152,109,152,109,152,109,152,109,152,109,152,109,152,109,152,109,152,109,152,109,152,0,0,0,0,0,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,110,111,110,110,112,5,5,112,113,112,5,110,111,113,113,5,113,112,5,110,111,112,113,112,5,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,112,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,113,112,5,110,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,0,0,117,0,0,117,117,117,0,117,117,0,0,0,0,0,0,0,0,117,0,117,0,117,0,0,117,117,0,0,0,0,0,0,117,117,0,0,0,0,0,0,117,117,117,117,117,0,117,117,0,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,0,0,0,0,0,0,0,121,122,119,120,120,119,123,124,120,121,122,119,123,124,120,121,122,119,123,124,120,121,122,119,123,124,120,121,122,119,123,124,120,121,122,119,123,124,120,121,122,119,119,120,120,121,122,123,124,120,119,123,124,120,121,122,124,119,123,124,120,121,122,0,0,119,120,119,123,124,120,121,122,119,123,124,120,121,122,0,120,124,119,119,123,124,120,121,122,119,123,124,120,121,122,120,0,120,120,119,123,124,120,121,122,119,123,124,120,121,122,119,123,124,120,121,122,119,123,124,120,121,122,119,123,124,120,121,122,120,120,0,120,119,123,124,120,121,122,119,123,124,120,121,122,0,0,0,127,128,126,0,126,127,128,126,127,128,126,127,128,126,127,128,126,127,128,126,127,128,127,128,126,0,126,127,128,0,126,127,128,126,126,127,128,126,127,128,0,126,0,126,127,128,126,127,128,126,127,128,126,127,128,126,127,128,126,127,128,126,127,128,0,126,127,128,126,127,128,0,0,130,130,118,130,118,130,118,130,118,130,118,130,118,130,130,130,130,118,130,130,118,118,130,130,130,118,118,118,118,130,130,130,130,118,118,130,118,130,130,118,118,130,118,130,130,130,130,130,130,118,130,118,130,118,130,118,130,118,130,118,130,118,130,0,0,133,131,133,131,133,131,133,131,133,131,133,131,133,131,131,0,0,0,0,0,0,133,131,133,131,131,131,133,131,131,133,131,133,0,131,133,131,133,0,131,0,131,133,131,133,131,133,131,133,131,133,131,133,131,133,116,116,116,116,116,0,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,0,134,134,134,0,0,0,94,135,134,94,135,134,94,135,134,94,135,134,94,135,134,94,135,134,134,134,134,135,94,135,134,135,135,94,94,94,94,135,134,94,94,94,135,134,94,135,134,94,135,94,135,134,94,135,134,135,135,134,135,94,135,134,94,135,134,94,135,134,94,135,134,94,135,134,94,135,134,94,135,134,0,0,0,0,137,0,136,137,136,137,136,137,136,137,0,136,137,136,137,136,137,136,136,136,137,0,0,136,137,136,137,136,137,136,136,137,136,137,0,136,136,137,136,137,136,137,136,137,136,137,136,137,136,137,0,0,0,0,0,0,0,0,0,0,0,0,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132],"f":[0,0,[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[[],2],0,0,[3,[[5,[4]]]],0,[-1,-1,[]],0,[-1,-2,[],[]],0,0,0,[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,0,[[],6],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,[[],2],0,[[],2],0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,-1,[]],[-1,-2,[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[9,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[10,11],12],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[[],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[13,[[15,[14]]]],[-1,-1,[]],[-1,-2,[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,[-1,-1,[]],[16,2],[-1,-2,[],[]],[[],16],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[16,17,[19,[18]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[16,17,[19,[18]]],2],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[20,[[5,[[22,[21]]]]]],[17,17],[[17,17],23],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[17,17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[17,17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[24,[[15,[25]]]],[-1,-1,[]],[-1,2,[]],[-1,2,[]],[-1,-2,[],[]],0,[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,18,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,18],2,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],26],[[],27],[[],28],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[26,26],26],[[27,27],27],[[28,28],28],[[26,26],2],[[27,27],2],[[28,28],2],[[26,26],26],[[27,27],27],[[28,28],28],[[26,26],2],[[27,27],2],[[28,28],2],[26,18],[27,18],[28,18],0,0,0,[[26,26],26],[[27,27],27],[[28,28],28],[[26,26],2],[[27,27],2],[[28,28],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[26,26],[27,27],[28,28],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[26,26],29],[[27,27],29],[[28,28],29],[26,26],[27,27],[28,28],0,[[26,26],4],[[27,27],4],[[28,28],4],[[26,26],26],[[27,27],27],[[28,28],28],[[],26],[[],27],[[],28],[[26,26],4],[[27,27],4],[[28,28],4],[[26,-1],2,30],[[27,-1],2,30],[[28,-1],2,30],[[26,31],12],[[26,31],12],[[26,31],12],[[26,31],12],[[26,31],12],[[27,31],12],[[27,31],12],[[27,31],12],[[27,31],12],[[27,31],12],[[28,31],12],[[28,31],12],[[28,31],12],[[28,31],12],[[28,31],12],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[18,[[1,[26]]]],[18,[[1,[27]]]],[18,[[1,[28]]]],[18,26],[18,27],[18,28],[18,26],[18,27],[18,28],[-1,26,30],[-1,27,30],[-1,28,30],[25,2],[[26,-1],2,32],[[27,-1],2,32],[[28,-1],2,32],0,0,0,[33,2],[25,2],0,[[26,26],2],[[27,27],2],[[28,28],2],[[26,26],26],[[27,27],27],[[28,28],28],[[26,26],4],[[27,27],4],[[28,28],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[26,4],[27,4],[28,4],[26,4],[27,4],[28,4],0,0,0,0,0,0,[17,33],[[],25],[26,26],[27,27],[28,28],0,[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[26,26],[[1,[29]]]],[[27,27],[[1,[29]]]],[[28,28],[[1,[29]]]],0,[33,[[1,[18]]]],[25,18],0,[25,4],[33,34],[[26,26],2],[[27,27],2],[[28,28],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[26,26,4],2],[[27,27,4],2],[[28,28,4],2],[[26,26],26],[[27,27],27],[[28,28],28],[[26,26],2],[[27,27],2],[[28,28],2],[[26,26],26],[[27,27],27],[[28,28],28],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[26,26],2],[[27,27],2],[[28,28],2],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[[26,26],26],[[27,27],27],[[28,28],28],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[33,18],2],[[25,18],2],[33,35],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[36,[[15,[37]]]],0,[-1,2,[]],[38,2],[-1,-1,[]],[-1,-1,[]],[-1,[[19,[18]]],[]],[38,[[19,[18]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[],38],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,2,[]],[38,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,[39,[[15,[40]]]],[41,[[15,[40]]]],0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,2,[]],[42,2],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,4,[]],[42,4],[17,42],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,43,[]],[42,43],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[44,[[15,[45]]]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],46],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[-1,[19,[18]]],17,[]],[[46,[19,[18]]],17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,[19,[18]]],2,[]],[[46,[19,[18]]],2],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[[47,17,48],49],[[47,17,48],49],[48,48],[[-1,-2],2,[],[]],[[47,17,48,49],2],[[47,17,48,17],2],[[47,17,48,17],2],[[47,17,48,17],[[2,[49,17]]]],[-1,-1,[]],[-1,-1,[]],[[47,17],49],[[47,17,48],49],[[17,48],17],[-1,-2,[],[]],[-1,-2,[],[]],[17,47],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[47,17],49],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[47,17,49],2],[[47,17,48,49],2],[[],17],[[47,17,48],49],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,50],17,[]],[-1,4,[]],0,[-1,4,[]],[[-1,50],17,[]],0,0,0,0,0,0,0,0,0,0,[[],51],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[51,51],51],[[51,51],2],[[51,51],51],[[51,51],2],[51,49],0,[[51,51],51],[[51,51],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[51,51],[[-1,-2],2,[],[]],[[51,51],29],[51,51],[[51,51],4],[52,[[15,[53]]]],[[51,51],51],[[],51],[[51,51],4],[[51,-1],2,30],[[51,31],12],[[51,31],12],[[51,31],12],[[51,31],12],[[51,31],12],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[49,[[1,[51]]]],[49,51],[49,51],[-1,51,30],[[51,-1],2,32],0,0,[[51,51],2],[[51,51],51],[[51,51],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[51,4],[51,4],[[],2],[[4,4,[15,[53]]],54],[51,51],0,[[11,51],[[1,[[15,[54]]]]]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[51,51],[[1,[29]]]],[[54,50],17],[54,[[22,[18]]]],[51,[[2,[4,4]]]],[54,4],0,[[51,51],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[51,51,4],2],[[51,51],51],[[51,51],2],[[51,51],51],[-1,-2,[],[]],[[51,51],2],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[[51,51],51],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[54,4],0,[[54,50],17],0,0,0,0,0,0,0,[55,4],0,[55,17],[55,17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[56,56],[[-1,-2],2,[],[]],[[56,56],4],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[2,[[15,[57]],[15,[57]]]]]],[[],55],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[57,50],17],[55,18],[[[15,[[5,[55]]]]],57],[57,4],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[55,[15,[57]]],2],0,0,[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[57,4],0,[[57,50],17],[[55,18],2],0,[[[15,[[5,[55]]]]],57],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[58,50],17],[[59,50],17],[58,4],[59,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[58,4],[59,4],[[58,50],17],[[59,50],17],[[],2],[60,6],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],2],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[61,4],[62,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[61,63],[62,64],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[61,61],[62,62],[63,63],[64,64],[[[65,[-1]]],[[65,[-1]]],[66,67,68,69,70,71]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[61,61],29],[[62,62],29],[[63,63],29],[[64,64],29],0,[[-1,-2],[[7,[2]]],[],72],0,[[61,61],4],[[62,62],4],[[63,63],4],[[64,64],4],[61,63],[62,64],[[61,31],12],[[62,31],12],[[63,31],12],[[64,31],12],[-1,-1,[]],[17,61],[63,61],[-1,-1,[]],[-1,-1,[]],[17,62],[64,62],[61,63],[-1,-1,[]],[17,63],[17,64],[-1,-1,[]],[62,64],[-1,-1,[]],[63,[[19,[18]]]],[[[65,[-1]]],-1,[66,67,68,69,70]],[61,-1,[]],[63,-1,[]],[63,[[19,[73]]]],[61,-1,[]],[[[65,[-1]]],-1,[66,67,68,69,70]],[64,[[74,[17]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[65,[-1]]],[],[66,67,68,69,70]],0,0,[[-1,-1],[[75,[-1]]],[66,67,68,69,70]],[[-1,-1],[[65,[-1]]],[66,67,68,69,70]],[[[75,[-1]]],1,[66,67,68,69,70]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[61,17],[62,17],[[61,61],[[1,[29]]]],[[62,62],[[1,[29]]]],[[63,63],[[1,[29]]]],[[64,64],[[1,[29]]]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,2,[]],[63,2],[64,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,76],[[77,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[-1,[[1,[63]]],[]],[78,[[1,[63]]]],[[-1,17],[[1,[[22,[63]]]]],[]],[[78,17],[[1,[[22,[63]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,0,[[-1,63],2,[]],[[78,63],2],[79,[[5,[78]]]],[21,2],0,0,[[21,31],12],[[],[[1,[21]]]],[17,[[1,[[22,[21]]]]]],[[],2],[[],2],[63,2],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[78,63,63],2],[[],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[63,21],[[],78],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[80,6],[[],2],[[],2],0,0,0,0,0,0,0,0,0,0,0,0,0,[81,2],[[],82],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[82,82],82],[[82,82],2],[[82,82],82],[[82,82],2],[82,18],0,[[82,82],82],[[82,82],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[83,83],[82,82],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[82,82],29],[82,82],[[82,82],4],[[84,85,[19,[18]]],2],0,[86,[[15,[[5,[81]]]]]],[[82,82],82],0,0,0,[[],82],[[83,83],4],[[82,82],4],0,0,[[82,-1],2,30],[[83,31],12],[[82,31],12],[[82,31],12],[[82,31],12],[[82,31],12],[[82,31],12],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[84,84],[18,[[1,[82]]]],[18,82],[18,82],[[[19,[18]]],[[2,[81,17,17]]]],[81,81],[-1,82,30],[[82,-1],2,32],[[82,82],2],[[81,62,62,82],2],[[82,82],82],[[82,82],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[82,4],[82,4],[[],17],[[84,85],2],[[84,85,64],2],0,[81,2],0,[[62,62,83,82],84],[[],81],[[],81],[82,82],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,[[82,82],[[1,[29]]]],[[81,84,[1,[[19,[18]]]]],2],[81,2],[[],2],[[82,82],2],[[81,64],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[82,82,4],2],0,0,0,[[82,82],82],[[82,82],2],[[82,82],82],[-1,-2,[],[]],[-1,-2,[],[]],[[82,82],2],[81,17],[[81,64],[[1,[73]]]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[[82,82],82],[[84,85],2],[[84,85,64],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[],87],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[87,87],87],[[87,87],2],[[87,87],87],[[87,87],2],[87,18],0,0,[[87,87],87],[[87,87],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[87,87],[73,73],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[87,87],29],[87,87],[[87,87],4],0,0,[[87,87],87],[[],87],[[],73],[[87,87],4],[73,4],[[87,-1],2,30],[[85,64],[[1,[73]]]],[[85,64],[[1,[73]]]],[73,87],[[87,31],12],[[87,31],12],[[87,31],12],[[87,31],12],[[87,31],12],0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[18,[[1,[87]]]],[18,87],[18,87],[-1,87,30],[17,85],[[87,-1],2,32],[[87,87],2],[[87,87],87],[[87,87],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[50],[-1,-2,[],[]],[87,4],[87,4],[73,4],[50,17],[[85,64,63,87],2],[[],85],[[[22,[[19,[18]]]]],50],[[63,87],73],[88,1],[87,87],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[87,87],[[1,[29]]]],[73,63],[73,4],[[87,87],2],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[87,87,4],2],[[87,87],87],[[87,87],2],[[87,87],87],[-1,-2,[],[]],[-1,-2,[],[]],[[87,87],2],[85,17],[[85,64],[[1,[73]]]],[[85,62],[[1,[61]]]],[[17,18,17],[[22,[[19,[18]]]]]],[17,-1,[]],[17,-1,[]],[[17,18],89],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[[87,87],87],[[85,64],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[73,4],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[90,90],[[-1,-2],2,[],[]],[91,[[15,[92]]]],[[90,90],4],[[90,31],[[7,[2,93]]]],[[90,31],[[7,[2,93]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[49,90],[[[19,[18]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],2],[[18,18,18,18],90],[[],92],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[90,89],[-1,89,[]],[90,49],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[[17,[15,[94]]],2],[[95,96,[15,[94]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[95,96],[[1,[2]]]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[97,[[5,[[22,[[1,[98]]]]]]]],[99,2],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[95,[[1,[17]]]],[17,99],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,[17,4],[[99,50],17],[99,4],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[99,4],[[99,50],17],0,0,0,0,[[90,95,95],[[1,[17]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[100,[[5,[[22,[[1,[101]]]]]]]],[-1,-1,[]],[-1,-1,[]],[17,[[1,[[2,[49,49]]]]]],[[90,95,95],[[1,[17]]]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[17,[[1,[[22,[18]]]]]],[[17,[22,[18]]],2],0,[17,2],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[17,49,49],2],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,[102,2],[-1,-1,[]],[-1,-2,[],[]],[[90,95,95,49,49],102],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[102,50],17],[102,4],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[102,4],[[102,50],17],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,[103,2],[-1,-1,[]],[-1,-2,[],[]],[[90,95,95],103],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[103,50],17],[103,4],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[103,4],[[103,50],17],[17,2],[4,6],0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[],104],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[104,2],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[104,105],0,[[104,[15,[106]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,2,[]],[107,2],[108,2],0,0,[[],107],[[],108],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,2,[]],[107,2],[108,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,[109,2],[-1,-1,[]],[-1,-1,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[17,109],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[109,2],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[[[110,[-1]]],[],[]],[111,[[113,[112]]]],[[[110,[-1]]],[],[]],[[[110,[-1]]],2,[]],[112,2],[[[5,[-1]]],[[110,[-1]]],[]],[[[5,[-1]],-2],-3,[],114,[]],[112,2],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[113,[-1]]],-1,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[113,[-1]]],[]],[[],112],[-1,[[5,[-1]]],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[17,[74,[17]]],115],0,[17,115],[17,115],[[18,49],115],[17,115],[[17,18,17],115],[[17,18,17],115],0,[[],115],[[],115],[[],115],[[],115],[17,115],[[49,95,95],115],[95,115],[[18,17],115],[23,6],[[],115],[[],115],[[],115],[[17,49],115],[[115,23],115],[[],115],[[],115],[17,115],[[17,17],115],[4,115],[17,115],[17,115],[17,115],[17,115],[17,115],[17,115],[[],115],[[17,17],115],[17,23],0,0,0,0,0,0,0,0,0,[[],2],0,[-1,-2,[],[]],[[],2],[[],105],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[1,[[2,[23,11]]]]]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,[116,2],0,0,0,0,0,0,[117,[[15,[118]]]],[23,2],[-1,-1,[]],0,[-1,-2,[],[]],0,0,[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[],2],0,0,0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,-1,[]],[17,105],[-1,-2,[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],105],0,0,0,0,0,0,0,0,0,[119,17],[120,2],[120,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,[[119,17],2],[120,2],[120,2],[121,[[5,[119]]]],[122,[[5,[119]]]],[123,2],[124,2],[120,2],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[124,17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[17,[[2,[17,17]]]],[[],124],[[],119],[[[15,[118]],17,4],120],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[],123],0,[[124,-1],[],125],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[17,17],[120,63],[120,17],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[120,17],0,[[17,17],17],[120,17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[126,[15,[94]]],2],[[[15,[94]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[127,[[5,[126]]]],[128,[[5,[[129,[17,[15,[118]]]]]]]],[126,[[1,[[15,[94]]]]]],[[],[[1,[[15,[94]]]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[17,[15,[118]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],126],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[17,[[1,[[15,[118]]]]]],0,[17,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[15,[94]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[130,17],[130,17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],0,0,[[130,17],2],[[[15,[118]],[19,[18]],[22,[89]]],2],0,0,[[[15,[118]]],[[15,[118]]]],[-1,-1,[]],[-1,-1,[]],[[130,17],[[15,[94]]]],[130,17],[118,17],0,[118,[[110,[130]]]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[[19,[18]]],[[15,[118]]]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[130,17],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[131,[[1,[[15,[94]]]]]],0,[[],17],[[],[[15,[118]]]],[[],[[1,[[15,[94]]]]]],[[],132],[[],17],[[],17],[133,[[5,[131]]]],[-1,-1,[]],[-1,-1,[]],[131,105],0,[-1,-2,[],[]],[-1,-2,[],[]],[[],131],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[105,2],[131,[[1,[[15,[94]]]]]],[[],[[1,[[15,[94]]]]]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,[[],116],[-1,-2,[],[]],[[116,116],116],[[116,116],2],[[116,116],116],[[116,116],2],[116,49],0,[[116,116],116],[[116,116],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[116,[[1,[[2,[23,11]]]]]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[116,116],[[-1,-2],2,[],[]],[[116,116],29],[116,116],[[116,116],4],[[116,116],116],[[],116],[[116,116],4],[[116,-1],2,30],[[116,31],12],[[116,31],12],[[116,31],12],[[116,31],12],[[116,31],12],[-1,-1,[]],[49,[[1,[116]]]],[49,116],[49,116],[-1,116,30],[[116,-1],2,32],[[116,116],2],[[116,116],116],[[116,116],4],[-1,-2,[],[]],[116,4],[116,4],[116,116],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[116,116],[[1,[29]]]],[[116,116],2],[-1,-2,[],[]],[-1,-2,[],[]],[[116,116,4],2],[[116,116],116],[[116,116],2],[[116,116],116],[-1,-2,[],[]],[[116,116],2],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[[116,116],116],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[134,134],[[-1,-2],2,[],[]],[[134,134],4],0,[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[135,134],[135,132],[94,17],0,[94,[[110,[135]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[15,[118]],17,4],94],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[17,[15,[94]]],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],2],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[[136,136],29],[137,[[5,[[138,[136]]]]]],[[136,136],4],0,[-1,-1,[]],[-1,-1,[]],[[],17],[[],17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[[136,136],[[1,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],2],0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[],2],[[],2],[[],2],[[],2],[[],2],[[],2],[132,2],[[],6],[[],6],0,[[17,17,17,17,17],132],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[[132,31],12],[-1,-1,[]],[-1,-2,[],[]],0,0,[-1,[[2,[-2,4]]],[],[]],[-1,[[2,[-2,4]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[132,17],2],0,0,[-1,[[7,[-2]]],[],[]],[-1,[[7,[-2]]],[],[]],[-1,8,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0],"c":[],"p":[[4,"Option",3143],[15,"tuple"],[3,"DEV_NON_BLOCKING_ACCESS",0],[15,"bool"],[3,"UPIntrFreeCell",2273],[15,"never"],[4,"Result",3144],[3,"TypeId",3145],[3,"Arguments",3146],[3,"Stdout",64],[15,"str"],[6,"Result",3146],[3,"BLOCK_DEVICE",97],[8,"BlockDevice",3147],[3,"Arc",3148],[3,"VirtIOBlock",122],[15,"usize"],[15,"u8"],[15,"slice"],[3,"QUEUE_FRAMES",150],[3,"FrameTracker",1347],[3,"Vec",3149],[15,"i32"],[3,"UART",196],[3,"NS16550a",225],[3,"IER",225],[3,"LSR",225],[3,"MCR",225],[4,"Ordering",3150],[8,"IntoIterator",3151],[3,"Formatter",3146],[8,"Hasher",3152],[3,"NS16550aRaw",225],[3,"ReadWithoutDLAB",225],[3,"WriteWithoutDLAB",225],[3,"GPU_DEVICE",554],[8,"GpuDevice",554],[3,"VirtIOGpuWrapper",554],[3,"KEYBOARD_DEVICE",608],[8,"InputDevice",608],[3,"MOUSE_DEVICE",608],[3,"VirtIOInputWrapper",608],[15,"u64"],[3,"NET_DEVICE",706],[8,"NetDevice",706],[3,"VirtIONetWrapper",706],[3,"PLIC",755],[4,"IntrTargetPriority",755],[15,"u32"],[3,"UserBuffer",1635],[3,"OpenFlags",834],[3,"ROOT_INODE",834],[3,"Inode",3153],[3,"OSInode",834],[3,"PipeRingBuffer",978],[4,"RingBufferStatus",978],[3,"Pipe",978],[3,"Stdin",1068],[3,"Stdout",1068],[3,"PanicInfo",3154],[3,"PhysAddr",1150],[3,"VirtAddr",1150],[3,"PhysPageNum",1150],[3,"VirtPageNum",1150],[3,"SimpleRange",1150],[8,"StepByOne",1150],[8,"Copy",3155],[8,"PartialEq",3150],[8,"PartialOrd",3150],[8,"Debug",3146],[8,"Clone",3156],[8,"DrawTarget",3157],[3,"PageTableEntry",1635],[15,"array"],[3,"SimpleRangeIterator",1150],[3,"Point",3158],[3,"Translated",3159],[3,"StackFrameAllocator",1347],[3,"FRAME_ALLOCATOR",1347],[3,"Layout",3160],[3,"MemorySet",1441],[3,"MapPermission",1441],[4,"MapType",1441],[3,"MapArea",1441],[3,"PageTable",1635],[3,"KERNEL_SPACE",1441],[3,"PTEFlags",1635],[3,"UserBufferIterator",1635],[3,"String",3161],[3,"IPv4",1822],[3,"LOSE_NET_STACK",1822],[3,"NetStack",1822],[3,"Error",3146],[3,"TaskControlBlock",2969],[15,"u16"],[3,"TCPPacket",3162],[3,"LISTEN_TABLE",1902],[3,"Port",1902],[3,"PortFd",1902],[3,"SOCKET_TABLE",1978],[3,"Socket",1978],[3,"TCP",2033],[3,"UDP",2065],[3,"Condvar",2108],[3,"TaskContext",2526],[8,"Mutex",2154],[3,"MutexSpin",2154],[3,"MutexBlocking",2154],[3,"Semaphore",2227],[3,"UPIntrRefMut",2273],[3,"INTR_MASKING_INFO",2273],[3,"IntrMaskingInfo",2273],[3,"UPSafeCellRaw",2273],[8,"FnOnce",3163],[15,"isize"],[3,"SignalFlags",2899],[3,"INITPROC",2467],[3,"ProcessControlBlock",2777],[3,"RecycleAllocator",2551],[3,"TaskUserRes",2551],[3,"PID_ALLOCATOR",2551],[3,"KSTACK_ALLOCATOR",2551],[3,"PidHandle",2551],[3,"KernelStack",2551],[8,"Sized",3155],[3,"TaskManager",2703],[3,"TASK_MANAGER",2703],[3,"PID2PCB",2703],[3,"BTreeMap",3164],[3,"ProcessControlBlockInner",2777],[3,"Processor",2842],[3,"TrapContext",3114],[3,"PROCESSOR",2842],[4,"TaskStatus",2969],[3,"TaskControlBlockInner",2969],[3,"TimerCondVar",3049],[3,"TIMERS",3049],[3,"BinaryHeap",3165],[6,"CharDeviceImpl",40],[6,"BlockDeviceImpl",40],[3,"VirtioHal",150],[8,"CharDevice",196],[3,"NS16550aInner",225],[3,"VirtIOInputInner",608],[8,"File",816],[3,"OSInodeInner",834],[6,"VPNRange",1150],[8,"FrameAllocator",1347],[6,"FrameAllocatorImpl",1347],[3,"CondvarInner",2108],[3,"MutexBlockingInner",2154],[3,"SemaphoreInner",2227]]}\ -}'); -if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; -if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; +var searchIndex = new Map(JSON.parse('[\ +["os",{"doc":"","t":"FONCNNNNNHCCNCNCNCCCNNQQHNNCCCCCCNNNNNNNISISSSSSOOHOHOESSSESSSSSFNNNNNNNNNNHNNNNNNNNNNEECCCCCCCFEONHNNNNNNNNNNNNNNNNNCNNSFNNNNNNONNNNNNNNNNNNNNONNNCFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEFONNNNNNNNMMNCNNMNNNNNNNNNMTTTTFFFFFFTTFTTFOOOONNNNNNNNNNNONNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNONNNNNNNNNNNNNNNNNNNNNNNOOOOOONNNNNONNNNNNNNNNNNNNNNNNNONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNJFKSFONNNNNNNNNNNNNOMNNNMNONNNNNNNNNNNNNNNNNNNNNMNNNNNKFFSSFFOONNNNNNNNNNNNNNNNNNNNNNNNONNONNNNMNONNNNMNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNFKSFONNNNNNNNNNNNNNNNNNNNNNMNNNNNMNNNNNNNNNNNNNNNGPFPNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKEEECEEECMMCMMTFFFTTFTTONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNHNNOHNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONPPPFFSGNONNNNNNNNNNNONNNNNNNNNNNNNNNONNNHNNNNNNNNNNNONNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNONNONFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHEEEEEEEEEEEEEEEECEECECHECCEEEESSFFFFKSISFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKIFFOMNMNNNNNNNNNNNNNNNNNNNOOMNNNOONHHHHHNNNNHNNNMNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNJJHHHPPFPFFGFTTTTONNONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNHHHNNNHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNONONNNNNNNNNNNNNNONNNHNNNNNNNNNNNNHHNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNTTTFFFTTFFTTTNNNNNNNNNNNOONNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNHHHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNCNNNNNNCCNNNNNNNNNNNNNCNNNNNNNNNNNNFFFOHHNNNNNNNNNNNNHNNNNNNNNNNNNNNHNNNNNNNOHNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNFFOOHNNNNNNONNNNNNNNNHHNNONNNNHHOHONNNNOHNNNNNNNNNNNNNNFONNNNNNONNNNNNNNNNOOOONNNNNNNNNFNNNNNNONNNNNNNNNNOOONNNNNNNNNHHEEEEEEECCCCFFNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNONNNNNKFFFNNNNNNNNNNNNNNNNNNNNNONNNMNNOONNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNONNNNNNFFNNNNNNNNNNNNONNNONNNNNNNNNNNNNNNNNNNNNNONNNNFFFFFONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSCCCCCCHCHHHHHHSHHHHHHHHHHHHHHHHHHHHHHHHHHHHEFEEEEEEOHENHHNNNHNNCHEEEEEENHNCNECNNEECCEENNECHCECNNNNNENNFNNNNNNNNNNNOONNONNNNNNNNSFFFFFFOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNHHNNNNNNNNNNNNNNHONONNNNNNNNNNNNOHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOHNNNNNNNNNNNNNFFFOONHNNNNNNNNNNNNNNNNNNNNNHNNNHNNNNNNNNNNHOHNNNNNNNNNNNNNNNNNNNNNHNNNNNNFFNNNNNNNNNNNNNNOONNOONNNNNNONNNOOONNNNNOONNNNOOOONNNNNNNNNNNNNNNFFONNNNNNNNNNNNNOHHHHHHNNNNONNNNNNNHNNNNHNHNNNNNNNNNNNNNNTTTTTFNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHPPPFFGNNNNNNNNNNNNNNNNNNNNNONNNNNNONNNNONNNNNNNOONNNNNNOONONNNNNNNNNNNNNNNNNNNNNSSFFOHNNNNNNNNHNNNNNNNONNHHNNNNNNNNNNNHONNNNNNNNNNNNNNECHHHHHHHHHFNNNNNNNNNNOONNNNONOONNNNNNNO","n":["DEV_NON_BLOCKING_ACCESS","__private_field","az","board","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","clear_bss","config","console","deref","drivers","from","fs","into","lang_items","mm","net","overflowing_as","overflowing_cast_from","print","println","rust_main","saturating_as","saturating_cast_from","sbi","sync","syscall","task","timer","trap","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","BlockDeviceImpl","CLOCK_FREQ","CharDeviceImpl","MMIO","VIRTGPU_XRES","VIRTGPU_YRES","VIRT_PLIC","VIRT_UART","condvar","condvars","device_init","inner","irq_handler","virtio_blk","CLOCK_FREQ","KERNEL_HEAP_SIZE","KERNEL_STACK_SIZE","MEMORY_END","MMIO","PAGE_SIZE","PAGE_SIZE_BITS","TRAMPOLINE","TRAP_CONTEXT_BASE","USER_STACK_SIZE","Stdout","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","into","overflowing_as","overflowing_cast_from","print","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","write_str","BLOCK_DEVICE","BLOCK_DEVICE","block","bus","chardev","gpu","input","net","plic","BLOCK_DEVICE","VirtIOBlock","__private_field","az","block_device_test","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","into","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","VIRTIO0","VirtIOBlock","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","condvars","from","handle_irq","into","new","overflowing_as","overflowing_cast_from","read_block","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","virtio_blk","wrapping_as","wrapping_cast_from","write_block","virtio","QUEUE_FRAMES","VirtioHal","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","dma_alloc","dma_dealloc","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","phys_to_virt","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","virt_to_phys","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","CharDevice","NS16550a","UART","__private_field","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","deref","from","handle_irq","init","into","ns16550a","overflowing_as","overflowing_cast_from","read","saturating_as","saturating_cast_from","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","write","AUX_OUTPUT1","AUX_OUTPUT2","DATA_AVAILABLE","DATA_TERMINAL_READY","IER","LSR","MCR","NS16550a","NS16550aInner","NS16550aRaw","REQUEST_TO_SEND","RX_AVAILABLE","ReadWithoutDLAB","THR_EMPTY","TX_EMPTY","WriteWithoutDLAB","_padding0","_padding1","_padding1","_padding2","all","all","all","az","az","az","az","az","az","az","az","base_addr","bitand","bitand","bitand","bitand_assign","bitand_assign","bitand_assign","bitor","bitor","bitor","bitor_assign","bitor_assign","bitor_assign","bits","bits","bits","bits","bits","bits","bitxor","bitxor","bitxor","bitxor_assign","bitxor_assign","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","cmp","complement","complement","complement","condvar","contains","contains","contains","difference","difference","difference","empty","empty","empty","eq","eq","eq","extend","extend","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_bits","from_bits","from_bits","from_bits_truncate","from_bits_truncate","from_bits_truncate","from_bits_unchecked","from_bits_unchecked","from_bits_unchecked","from_iter","from_iter","from_iter","handle_irq","hash","hash","hash","ier","ier","iir","init","init","inner","insert","insert","insert","intersection","intersection","intersection","intersects","intersects","intersects","into","into","into","into","into","into","into","into","is_all","is_all","is_all","is_empty","is_empty","is_empty","lcr","lcr","lsr","lsr","mcr","mcr","new","new","not","not","not","ns16550a","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","partial_cmp","partial_cmp","rbr","read","read","read_buffer","read_buffer_is_empty","read_end","remove","remove","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","set","set","set","sub","sub","sub","sub_assign","sub_assign","sub_assign","symmetric_difference","symmetric_difference","symmetric_difference","thr","to_owned","to_owned","to_owned","toggle","toggle","toggle","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","union","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","write","write","write_end","BMP_DATA","GPU_DEVICE","GpuDevice","VIRTIO7","VirtIOGpuWrapper","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","fb","flush","flush","from","from","get_framebuffer","get_framebuffer","gpu","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","update_cursor","update_cursor","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","InputDevice","KEYBOARD_DEVICE","MOUSE_DEVICE","VIRTIO5","VIRTIO6","VirtIOInputInner","VirtIOInputWrapper","__private_field","__private_field","az","az","az","az","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","condvar","deref","deref","events","from","from","from","from","handle_irq","handle_irq","inner","into","into","into","into","is_empty","is_empty","new","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","read_event","read_event","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","virtio_input","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","NET_DEVICE","NetDevice","VIRTIO8","VirtIONetWrapper","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","from","from","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","receive","receive","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","transmit","transmit","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","IntrTargetPriority","Machine","PLIC","Supervisor","az","az","base_addr","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","claim","claim_comp_ptr_of_hart_with_priority","clone","clone_into","complete","disable","enable","enable_ptr","from","from","get_priority","get_threshold","hart_id_with_priority","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","priority_ptr","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","set_priority","set_threshold","supported_number","threshold_ptr_of_hart_with_priority","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","File","OpenFlags","Stdin","Stdout","inode","list_apps","make_pipe","open_file","pipe","read","readable","stdio","writable","write","CREATE","OSInode","OSInodeInner","OpenFlags","RDONLY","RDWR","ROOT_INODE","TRUNC","WRONLY","__private_field","all","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","cmp","complement","contains","deref","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","inner","inode","insert","intersection","intersects","into","into","into","into","is_all","is_empty","list_apps","new","not","offset","open_file","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","read","read_all","read_write","readable","readable","remove","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","Empty","Full","Normal","Pipe","PipeRingBuffer","RING_BUFFER_SIZE","RingBufferStatus","all_write_ends_closed","arr","available_read","available_write","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","buffer","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","eq","from","from","from","head","into","into","into","make_pipe","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","read","read_byte","read_end_with_buffer","readable","readable","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","set_write_end","status","tail","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write_byte","write_end","write_end_with_buffer","Stdin","Stdout","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","read","read","readable","readable","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","writable","writable","write","write","backtrace","panic","FrameTracker","KERNEL_SPACE","KERNEL_SPACE","MapArea","MapPermission","MapType","MemorySet","PageTable","PageTableEntry","PhysAddr","PhysPageNum","StepByOne","UserBuffer","VPNRange","VirtAddr","VirtPageNum","address","frame_alloc","frame_alloc_more","frame_allocator","frame_dealloc","heap_allocator","init","kernel_token","memory_set","page_table","translated_byte_buffer","translated_ref","translated_refmut","translated_str","PA_WIDTH_SV39","PPN_WIDTH_SV39","PhysAddr","PhysPageNum","SimpleRange","SimpleRangeIterator","StepByOne","VA_WIDTH_SV39","VPNRange","VPN_WIDTH_SV39","VirtAddr","VirtPageNum","aligned","aligned","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","ceil","ceil","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","current","end","eq","eq","eq","eq","floor","floor","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_bytes_array","get_end","get_mut","get_mut","get_pte_array","get_ref","get_start","indexes","into","into","into","into","into","into","into_iter","into_iter","l","l","new","new","next","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_offset","page_offset","partial_cmp","partial_cmp","partial_cmp","partial_cmp","r","r","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","step","step","step","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","FRAME_ALLOCATOR","FrameAllocator","FrameAllocatorImpl","FrameTracker","StackFrameAllocator","__private_field","alloc","alloc","alloc_more","alloc_more","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","current","current","dealloc","dealloc","deref","drop","end","end","fmt","frame_alloc","frame_alloc_more","frame_allocator_alloc_more_test","frame_allocator_test","frame_dealloc","from","from","from","init","init_frame_allocator","into","into","into","new","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","ppn","recycled","recycled","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","HEAP_ALLOCATOR","HEAP_SPACE","handle_alloc_error","heap_test","init_heap","Framed","Identical","KERNEL_SPACE","Linear","MapArea","MapPermission","MapType","MemorySet","R","U","W","X","__private_field","activate","all","areas","az","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone_into","clone_into","cmp","complement","contains","copy_data","data_frames","deref","difference","ebss","edata","ekernel","empty","eq","eq","erodata","etext","extend","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_another","from_bits","from_bits_truncate","from_bits_unchecked","from_elf","from_existed_user","from_iter","hash","insert","insert_framed_area","intersection","intersects","into","into","into","into","into","is_all","is_empty","kernel_token","map","map_one","map_perm","map_trampoline","map_type","new","new_bare","new_kernel","not","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","page_table","partial_cmp","push","recycle_data_pages","remap_test","remove","remove_area_with_start_vpn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","sbss_with_stack","sdata","set","srodata","stext","strampoline","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unmap_one","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","vpn_range","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","A","D","G","PTEFlags","PageTable","PageTableEntry","R","U","UserBuffer","UserBufferIterator","V","W","X","all","az","az","az","az","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bits","bitxor","bitxor_assign","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","buffers","buffers","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone","clone_into","clone_into","cmp","complement","contains","current_buffer","current_idx","difference","empty","empty","eq","executable","extend","find_pte","find_pte_create","flags","fmt","fmt","fmt","fmt","fmt","frames","from","from","from","from","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","from_token","hash","insert","intersection","intersects","into","into","into","into","into","into_iter","into_iter","is_all","is_empty","is_valid","len","map","new","new","new","next","not","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","partial_cmp","ppn","readable","remove","root_ppn","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","to_owned","toggle","token","translate","translate_va","translated_byte_buffer","translated_ref","translated_refmut","translated_str","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","unmap","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","IPv4","LOSE_NET_STACK","NetStack","__private_field","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","deref","eq","fmt","fmt","from","from","from","from_u32","hexdump","into","into","into","net_interrupt_handler","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","port_table","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","socket","tcp","to_owned","to_string","to_string","to_u32","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","udp","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","LISTEN_TABLE","Port","PortFd","__private_field","accept","accept_connection","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","check_accept","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","drop","from","from","from","into","into","into","listen","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","port","port_acceptable","read","readable","receivable","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","schedule","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","writable","write","SOCKET_TABLE","Socket","__private_field","ack","add_socket","az","az","borrow","borrow","borrow_mut","borrow_mut","buffers","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","deref","from","from","get_s_a_by_index","get_socket","into","into","lport","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","pop_data","push_data","raddr","remove_socket","rport","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","seq","set_s_a_by_index","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","TCP","ack","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","dport","drop","from","into","new","overflowing_as","overflowing_cast_from","read","readable","saturating_as","saturating_cast_from","seq","socket_index","sport","target","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","writable","write","UDP","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","dport","drop","from","into","new","overflowing_as","overflowing_cast_from","read","readable","saturating_as","saturating_cast_from","socket_index","sport","target","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","writable","write","set_timer","shutdown","Condvar","Mutex","MutexBlocking","MutexSpin","Semaphore","UPIntrFreeCell","UPIntrRefMut","condvar","mutex","semaphore","up","Condvar","CondvarInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","signal","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wait_no_sched","wait_queue","wait_with_mutex","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","Mutex","MutexBlocking","MutexBlockingInner","MutexSpin","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","from","from","from","inner","into","into","into","lock","lock","lock","locked","locked","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unlock","unlock","unlock","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wait_queue","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","Semaphore","SemaphoreInner","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","count","down","from","from","inner","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","up","wait_queue","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","INTR_MASKING_INFO","IntrMaskingInfo","UPIntrFreeCell","UPIntrRefMut","UPSafeCellRaw","__private_field","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","deref_mut","drop","enter","exclusive_access","exclusive_session","exit","from","from","from","from","from","get_mut","inner","inner","into","into","into","into","into","nested_level","new","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","sie_before_masking","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","SYSCALL_ACCEPT","SYSCALL_CLOSE","SYSCALL_CONDVAR_CREATE","SYSCALL_CONDVAR_SIGNAL","SYSCALL_CONDVAR_WAIT","SYSCALL_CONNECT","SYSCALL_DUP","SYSCALL_EVENT_GET","SYSCALL_EXEC","SYSCALL_EXIT","SYSCALL_FORK","SYSCALL_FRAMEBUFFER","SYSCALL_FRAMEBUFFER_FLUSH","SYSCALL_GETPID","SYSCALL_GETTID","SYSCALL_GET_TIME","SYSCALL_KEY_PRESSED","SYSCALL_KILL","SYSCALL_LISTEN","SYSCALL_MUTEX_CREATE","SYSCALL_MUTEX_LOCK","SYSCALL_MUTEX_UNLOCK","SYSCALL_OPEN","SYSCALL_PIPE","SYSCALL_READ","SYSCALL_SEMAPHORE_CREATE","SYSCALL_SEMAPHORE_DOWN","SYSCALL_SEMAPHORE_UP","SYSCALL_SLEEP","SYSCALL_THREAD_CREATE","SYSCALL_WAITPID","SYSCALL_WAITTID","SYSCALL_WRITE","SYSCALL_YIELD","fs","gui","input","net","process","sync","syscall","thread","sys_close","sys_dup","sys_open","sys_pipe","sys_read","sys_write","FB_VADDR","sys_framebuffer","sys_framebuffer_flush","sys_event_get","sys_key_pressed","sys_accept","sys_connect","sys_listen","sys_exec","sys_exit","sys_fork","sys_get_time","sys_getpid","sys_kill","sys_waitpid","sys_yield","sys_condvar_create","sys_condvar_signal","sys_condvar_wait","sys_mutex_create","sys_mutex_lock","sys_mutex_unlock","sys_semaphore_create","sys_semaphore_down","sys_semaphore_up","sys_sleep","sys_gettid","sys_thread_create","sys_waittid","IDLE_PID","INITPROC","KernelStack","PidHandle","SignalFlags","TaskContext","TaskControlBlock","TaskStatus","__private_field","add_initproc","add_task","az","block_current_and_run_next","block_current_task","borrow","borrow_mut","cast_from","check_signals_of_current","checked_as","checked_cast_from","context","current_add_signal","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","exit_current_and_run_next","from","id","into","kstack_alloc","manager","overflowing_as","overflowing_cast_from","pid2process","pid_alloc","process","processor","remove_from_pid2process","run_tasks","saturating_as","saturating_cast_from","schedule","signal","suspend_current_and_run_next","switch","take_current_task","task","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wakeup_task","wrapping_as","wrapping_cast_from","TaskContext","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","from","goto_trap_return","into","overflowing_as","overflowing_cast_from","ra","s","saturating_as","saturating_cast_from","sp","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","zero_init","IDLE_PID","KSTACK_ALLOCATOR","KernelStack","PID_ALLOCATOR","PidHandle","RecycleAllocator","TaskUserRes","__private_field","__private_field","alloc","alloc_tid","alloc_user_res","az","az","az","az","az","az","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","checked_cast_from","current","dealloc","dealloc_tid","dealloc_user_res","deref","deref","drop","drop","drop","from","from","from","from","from","from","get_top","into","into","into","into","into","into","kernel_stack_position","kstack_alloc","new","new","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid_alloc","process","push_on_top","recycled","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","saturating_cast_from","tid","trap_cx_bottom_from_tid","trap_cx_ppn","trap_cx_user_va","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","ustack_base","ustack_base","ustack_bottom_from_tid","ustack_top","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","PID2PCB","TASK_MANAGER","TaskManager","__private_field","__private_field","add","add_task","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","deref","deref","fetch","fetch_task","from","from","from","insert_into_pid2process","into","into","into","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","pid2process","ready_queue","remove_from_pid2process","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wakeup_task","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","ProcessControlBlock","ProcessControlBlockInner","alloc_fd","alloc_tid","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","children","condvar_list","dealloc_tid","exec","exit_code","fd_table","fork","from","from","get_task","get_user_token","getpid","inner","inner_exclusive_access","into","into","is_zombie","memory_set","mutex_list","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","parent","pid","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","semaphore_list","signals","task_res_allocator","tasks","thread_count","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","PROCESSOR","Processor","__private_field","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","checked_as","checked_as","checked_cast_from","checked_cast_from","current","current","current_kstack_top","current_process","current_task","current_trap_cx","current_trap_cx_user_va","current_user_token","deref","from","from","get_idle_task_cx_ptr","idle_task_cx","into","into","new","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","run_tasks","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","schedule","take_current","take_current_task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","SIGABRT","SIGFPE","SIGILL","SIGINT","SIGSEGV","SignalFlags","all","az","bitand","bitand_assign","bitor","bitor_assign","bits","bits","bitxor","bitxor_assign","borrow","borrow_mut","cast_from","check_error","checked_as","checked_cast_from","clone","clone_into","cmp","complement","contains","difference","empty","eq","extend","fmt","fmt","fmt","fmt","fmt","from","from_bits","from_bits_truncate","from_bits_unchecked","from_iter","hash","insert","intersection","intersects","into","is_all","is_empty","not","overflowing_as","overflowing_cast_from","partial_cmp","remove","saturating_as","saturating_cast_from","set","sub","sub_assign","symmetric_difference","to_owned","toggle","try_from","try_into","type_id","union","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","__switch","Blocked","Ready","Running","TaskControlBlock","TaskControlBlockInner","TaskStatus","az","az","az","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cast_from","cast_from","cast_from","checked_as","checked_as","checked_as","checked_cast_from","checked_cast_from","checked_cast_from","clone","clone_into","eq","exit_code","from","from","from","get_status","get_trap_cx","get_user_token","inner","inner_exclusive_access","into","into","into","kstack","new","overflowing_as","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","overflowing_cast_from","process","res","saturating_as","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","saturating_cast_from","task_cx","task_status","to_owned","trap_cx_ppn","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","wrapping_cast_from","MSEC_PER_SEC","TICKS_PER_SEC","TIMERS","TimerCondVar","__private_field","add_timer","az","az","borrow","borrow","borrow_mut","borrow_mut","cast_from","cast_from","check_timer","checked_as","checked_as","checked_cast_from","checked_cast_from","cmp","deref","eq","expire_ms","from","from","get_time","get_time_ms","into","into","overflowing_as","overflowing_as","overflowing_cast_from","overflowing_cast_from","partial_cmp","saturating_as","saturating_as","saturating_cast_from","saturating_cast_from","set_next_trigger","task","try_from","try_from","try_into","try_into","type_id","type_id","unwrapped_as","unwrapped_as","unwrapped_cast_from","unwrapped_cast_from","wrapping_as","wrapping_as","wrapping_cast_from","wrapping_cast_from","TrapContext","context","disable_supervisor_interrupt","enable_supervisor_interrupt","enable_timer_interrupt","init","set_kernel_trap_entry","set_user_trap_entry","trap_from_kernel","trap_handler","trap_return","TrapContext","app_init_context","az","borrow","borrow_mut","cast_from","checked_as","checked_cast_from","fmt","from","into","kernel_satp","kernel_sp","overflowing_as","overflowing_cast_from","saturating_as","saturating_cast_from","sepc","set_sp","sstatus","trap_handler","try_from","try_into","type_id","unwrapped_as","unwrapped_cast_from","wrapping_as","wrapping_cast_from","x"],"q":[[0,"os"],[40,"os::board"],[54,"os::config"],[64,"os::console"],[86,"os::drivers"],[95,"os::drivers::block"],[120,"os::drivers::block::virtio_blk"],[147,"os::drivers::bus"],[148,"os::drivers::bus::virtio"],[194,"os::drivers::chardev"],[223,"os::drivers::chardev::ns16550a"],[552,"os::drivers::gpu"],[606,"os::drivers::input"],[704,"os::drivers::net"],[753,"os::drivers::plic"],[814,"os::fs"],[828,"os::fs::inode"],[972,"os::fs::pipe"],[1062,"os::fs::stdio"],[1110,"os::lang_items"],[1112,"os::mm"],[1142,"os::mm::address"],[1337,"os::mm::frame_allocator"],[1426,"os::mm::heap_allocator"],[1431,"os::mm::memory_set"],[1625,"os::mm::page_table"],[1812,"os::net"],[1892,"os::net::port_table"],[1968,"os::net::socket"],[2023,"os::net::tcp"],[2055,"os::net::udp"],[2085,"os::sbi"],[2087,"os::sync"],[2098,"os::sync::condvar"],[2144,"os::sync::mutex"],[2217,"os::sync::semaphore"],[2263,"os::sync::up"],[2380,"os::syscall"],[2422,"os::syscall::fs"],[2428,"os::syscall::gui"],[2431,"os::syscall::input"],[2433,"os::syscall::net"],[2436,"os::syscall::process"],[2444,"os::syscall::sync"],[2454,"os::syscall::thread"],[2457,"os::task"],[2516,"os::task::context"],[2541,"os::task::id"],[2693,"os::task::manager"],[2767,"os::task::process"],[2832,"os::task::processor"],[2889,"os::task::signal"],[2958,"os::task::switch"],[2959,"os::task::task"],[3039,"os::timer"],[3093,"os::trap"],[3104,"os::trap::context"],[3133,"core::option"],[3134,"core::result"],[3135,"core::any"],[3136,"core::fmt"],[3137,"core::fmt"],[3138,"alloc::sync"],[3139,"alloc::vec"],[3140,"core::cmp"],[3141,"core::iter::traits::collect"],[3142,"core::fmt"],[3143,"easy_fs::vfs"],[3144,"core::panic::panic_info"],[3145,"core::marker"],[3146,"core::cmp"],[3147,"core::alloc::layout"],[3148,"alloc::string"],[3149,"core::fmt"],[3150,"core::ops::function"],[3151,"core::marker"],[3152,"alloc::collections::binary_heap"]],"d":["","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","InterruptEnableRegister","LineStatusRegister","Model Control Register","","","","","","","","","","ignore FCR","ignore MSR","ignore other registers","ignore SCR","Returns the set containing all flags.","Returns the set containing all flags.","Returns the set containing all flags.","","","","","","","","","","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Returns the union of the two sets of flags.","Adds the set of flags.","Adds the set of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","Returns the raw value of the flags currently stored.","","","","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Returns the left flags, but with all the right flags …","Toggles the set of flags.","Toggles the set of flags.","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns the difference between the flags in self and other.","Returns an empty set of flags.","Returns an empty set of flags.","Returns an empty set of flags.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","Convert from underlying bit representation, preserving all …","","","","","","","","interrupt enable register","interrupt enable register","interrupt identification register","","","","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","Returns true if no flags are currently stored.","line control register","line control register","line status register","line status register","model control register","modem control register","","","Returns the complement of this set of flags.","Returns the complement of this set of flags.","Returns the complement of this set of flags.","","","","","","","","","","","","","","","","","","","","","receiver buffer register","","","","","","Removes the specified flags in-place.","Removes the specified flags in-place.","Removes the specified flags in-place.","","","","","","","","","","","","","","","","","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","Returns the symmetric difference between the flags in self …","transmitter holding register","","","","Toggles the specified flags in-place.","Toggles the specified flags in-place.","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","","","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","Returns the complement of this set of flags.","","","","","","","","","","","","","","Do not check validity for simplicity Return (readable, …","","","Removes the specified flags in-place.","","","","","","","","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (read_end, write_end)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Definitions","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","offset of page num","","","","","","","","","","","Returns the set containing all flags.","","","","","","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","data: start-aligned but maybe with shorter length assume …","","","Returns the difference between the flags in self and other.","","","","Returns an empty set of flags.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","Include sections in elf and trampoline, also returns …","","","","Inserts the specified flags in-place.","Assume that no conflicts.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","Mention that trampoline is not collected by areas.","","","","Without kernel stacks.","Returns the complement of this set of flags.","","","","","","","","","","","","","Add a new MapArea into this MemorySet. Assuming that there …","","","Removes the specified flags in-place.","","","","","","","","","","","","","","Inserts or removes the specified flags depending on the …","","","","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","","","","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","","","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","Temporarily used to get arguments from user space.","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","","","","","","","","Returns the complement of this set of flags.","","","","","","","","","","","","","","Removes the specified flags in-place.","","","","","","","","","","","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","","Toggles the specified flags in-place.","","","","","","","Load a string from other address spaces into kernel space …","","","","","","","","","","","","","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","get the seq and ack by socket index","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","use sbi call to set timer","use sbi call to shutdown the kernel","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Panic if the data has been borrowed.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","inner data","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","check UART’s read-buffer is empty or not","","","","","","","","","","If there is not a child process whose pid is same as …","","","","","","","","","","","","","","thread does not exist, return -1 thread has not exited …","","","","","","","","","","","","","","This function must be followed by a schedule","","","","","","","","","","","","","","","","Exit the current ‘Running’ task and run the next task …","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return (bottom, top) of a kernel stack in kernel space.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Only support processes with a single thread.","","","Only support processes with a single thread.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the set containing all flags.","","Returns the intersection between the two sets of flags.","Disables all flags disabled in the set.","Returns the union of the two sets of flags.","Adds the set of flags.","Returns the raw value of the flags currently stored.","","Returns the left flags, but with all the right flags …","Toggles the set of flags.","","","","","","","","","","Returns the complement of this set of flags.","Returns true if all of the flags in other are contained …","Returns the difference between the flags in self and other.","Returns an empty set of flags.","","","","","","","","Returns the argument unchanged.","Convert from underlying bit representation, unless that …","Convert from underlying bit representation, dropping any …","Convert from underlying bit representation, preserving all …","","","Inserts the specified flags in-place.","Returns the intersection between the flags in self and …","Returns true if there are flags common to both self and …","Calls U::from(self).","Returns true if all flags are currently set.","Returns true if no flags are currently stored.","Returns the complement of this set of flags.","","","","Removes the specified flags in-place.","","","Inserts or removes the specified flags depending on the …","Returns the set difference of the two sets of flags.","Disables all flags enabled in the set.","Returns the symmetric difference between the flags in self …","","Toggles the specified flags in-place.","","","","Returns the union of between the flags in self and other.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","","","","","","","","","","",""],"i":[0,3,3,0,3,3,3,3,3,0,0,0,3,0,3,0,3,0,0,0,3,3,0,0,0,3,3,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,142,143,0,142,0,143,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,14,14,0,0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,21,144,21,144,21,144,21,144,21,144,21,144,21,21,144,144,144,21,144,21,144,21,144,21,144,144,21,144,21,144,21,144,21,144,21,144,21,144,21,144,144,21,144,21,0,0,0,25,25,25,25,25,25,25,25,25,27,27,25,0,25,25,27,25,25,25,25,25,25,25,25,25,27,30,30,29,30,0,0,0,0,0,0,30,28,0,29,28,0,38,37,38,37,28,29,30,37,38,36,145,26,28,29,30,36,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,26,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,28,28,28,28,28,29,29,29,29,29,30,30,30,30,30,37,38,36,145,26,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,26,28,29,30,37,38,37,36,26,26,28,29,30,28,29,30,28,29,30,37,38,36,145,26,28,29,30,28,29,30,28,29,30,37,38,37,38,37,38,36,26,28,29,30,145,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,28,29,30,37,36,26,145,26,36,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,28,29,30,28,29,30,28,29,30,28,29,30,38,28,29,30,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,37,38,36,145,26,28,29,30,36,26,36,0,0,0,0,0,39,41,39,41,39,41,39,41,39,41,39,41,39,39,41,40,41,41,39,40,41,41,41,39,41,41,39,41,39,41,39,41,39,41,39,41,39,41,39,41,39,41,39,40,41,41,39,41,39,0,0,0,0,0,0,0,42,44,146,45,42,44,146,45,42,44,146,45,42,44,146,45,42,44,146,45,42,44,146,45,42,44,45,42,44,146,146,45,42,44,43,45,45,146,45,42,44,43,45,45,146,45,42,44,146,45,42,44,43,45,146,45,42,44,146,45,42,44,146,45,42,44,146,45,42,44,146,45,42,44,146,45,42,44,146,45,42,44,146,146,45,42,44,146,45,42,44,0,0,0,0,47,49,47,49,47,49,47,49,47,49,47,49,47,47,49,47,49,47,49,49,47,49,47,48,49,49,47,49,47,48,49,49,47,49,47,49,47,49,47,49,47,49,47,49,47,0,51,0,51,50,51,50,50,51,50,51,50,51,50,51,50,51,50,50,51,51,50,50,50,50,50,51,50,50,50,50,51,50,50,51,50,51,50,50,51,50,51,50,50,51,50,51,50,51,50,51,50,51,50,51,50,51,50,51,50,51,0,0,0,0,0,0,0,0,0,53,53,0,53,53,55,0,0,0,55,55,0,55,55,56,55,58,147,56,55,55,55,55,55,55,55,55,55,58,147,56,55,58,147,56,55,58,147,56,55,58,147,56,55,58,147,56,55,55,55,55,55,55,56,55,55,55,55,55,55,55,55,55,58,147,56,55,55,55,55,55,55,58,147,55,55,55,58,147,56,55,55,55,0,58,55,147,0,58,147,56,55,58,147,56,55,55,58,58,55,58,58,55,58,147,56,55,58,147,56,55,55,55,55,55,55,55,58,147,56,55,58,147,56,55,58,147,56,55,55,58,147,56,55,58,147,56,55,58,147,56,55,58,147,56,55,58,58,58,60,60,60,0,0,0,0,59,59,59,59,61,59,60,61,59,60,61,59,60,61,61,59,60,61,59,60,61,59,60,60,60,60,61,59,60,59,61,59,60,0,59,61,59,60,61,59,60,61,59,61,61,61,61,59,60,61,59,60,59,59,59,60,61,59,60,61,59,60,61,59,60,61,59,60,61,59,60,61,59,60,61,59,60,61,61,61,59,59,61,0,0,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,66,78,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,65,66,78,65,66,67,68,69,78,65,66,67,68,69,65,66,67,68,69,65,66,67,68,69,65,66,67,68,78,78,65,66,67,68,65,66,65,66,67,68,78,65,65,65,66,66,66,67,67,67,68,68,68,69,67,69,65,67,67,65,69,68,78,65,66,67,68,69,78,69,148,69,78,69,78,78,65,66,67,68,69,78,65,66,67,68,69,65,66,65,66,67,68,148,69,78,65,66,67,68,69,78,65,66,67,68,69,70,67,68,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,78,65,66,67,68,69,0,0,0,0,0,81,79,80,79,80,22,80,81,22,80,81,22,80,81,22,80,81,22,80,81,22,80,81,80,149,79,80,81,22,80,149,22,0,0,0,0,0,22,80,81,80,0,22,80,81,79,22,80,22,80,81,22,80,81,22,80,149,22,80,81,22,80,81,22,80,81,22,80,81,22,80,81,22,80,81,22,80,81,22,80,81,22,80,81,0,0,0,0,0,85,85,0,85,0,0,0,0,84,84,84,84,88,83,84,83,83,86,88,85,84,84,84,84,84,84,84,84,84,83,86,88,85,84,83,86,88,85,84,83,86,88,85,84,83,86,88,85,84,83,86,88,85,84,85,84,85,84,84,84,84,86,86,88,84,0,0,0,84,85,84,0,0,84,85,84,84,84,84,84,83,86,88,85,84,86,84,84,84,83,83,84,84,84,83,84,84,83,86,88,85,84,84,84,0,86,86,86,83,86,86,83,83,84,83,86,88,85,84,83,86,88,85,84,83,84,83,83,0,84,83,83,86,88,85,84,83,86,88,85,84,0,0,84,0,0,0,84,84,84,85,84,84,83,83,83,86,88,85,84,83,86,88,85,84,83,86,88,85,84,84,86,86,83,86,88,85,84,83,86,88,85,84,86,83,86,88,85,84,83,86,88,85,84,89,89,89,0,0,0,89,89,0,0,89,89,89,89,87,54,90,89,76,89,89,89,89,89,89,76,89,89,87,54,90,89,76,87,54,90,89,76,54,90,87,54,90,89,76,87,54,90,89,76,87,54,90,89,76,89,76,89,76,89,89,89,90,90,89,89,76,89,76,89,87,87,76,89,89,89,89,89,87,87,54,90,89,76,89,89,89,89,87,89,89,89,89,87,54,90,89,76,54,90,89,89,76,54,87,87,54,76,90,89,87,54,90,89,76,87,54,90,89,76,89,76,76,89,87,87,54,90,89,76,87,54,90,89,76,89,89,89,89,89,76,89,87,87,87,0,0,0,0,87,54,90,89,76,87,54,90,89,76,87,54,90,89,76,89,87,87,54,90,89,76,87,54,90,89,76,87,54,90,89,76,87,54,90,89,76,76,0,0,0,93,92,94,93,92,94,93,92,94,93,92,94,93,92,94,93,92,94,93,92,92,93,92,92,92,92,94,93,92,0,92,94,93,0,92,94,92,94,93,92,94,93,0,92,94,93,92,94,93,0,0,92,92,92,92,92,94,93,92,94,93,92,94,93,0,92,94,93,92,94,93,92,94,93,92,94,93,0,0,0,99,0,0,100,101,99,100,101,99,100,101,99,100,101,99,0,100,101,99,100,101,99,99,101,100,101,99,100,101,99,0,101,100,101,99,100,101,99,100,0,101,101,100,100,101,99,100,101,99,100,100,101,99,100,101,99,100,101,99,100,101,99,100,101,99,100,101,99,100,101,99,101,101,0,0,102,103,0,103,102,103,102,103,102,103,103,102,103,102,103,102,102,103,102,0,0,103,102,103,103,102,103,102,0,0,103,0,103,103,102,103,102,103,0,103,102,103,102,103,102,103,102,103,102,103,102,103,102,0,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,0,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,150,106,150,106,150,106,150,106,150,106,150,106,150,106,106,150,106,106,150,106,150,106,150,106,150,106,106,150,106,150,106,150,106,150,106,150,106,150,106,106,150,106,150,0,0,0,0,109,110,151,109,110,151,109,110,151,109,110,151,109,110,151,109,110,151,109,110,151,110,109,110,151,108,109,110,109,151,109,110,109,110,151,109,110,151,109,110,151,109,110,151,109,110,151,109,110,151,109,110,151,108,109,110,109,110,151,109,110,151,151,109,110,151,109,110,151,0,0,111,152,111,152,111,152,111,152,111,152,111,152,152,111,111,152,111,111,152,111,111,152,111,152,111,152,111,152,111,152,111,152,111,152,111,152,111,152,111,152,111,152,111,152,0,0,0,0,0,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,112,113,112,112,114,5,5,114,115,114,5,112,113,115,115,5,115,114,5,112,113,114,115,114,5,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,114,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,115,114,5,112,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,120,0,0,120,120,120,0,120,120,0,0,0,0,0,0,0,0,120,0,120,0,120,0,0,120,120,0,0,0,0,0,0,120,120,0,0,0,0,0,0,120,120,120,120,120,0,120,120,0,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,0,0,0,0,0,0,0,124,125,122,123,123,122,126,127,123,124,125,122,126,127,123,124,125,122,126,127,123,124,125,122,126,127,123,124,125,122,126,127,123,124,125,122,126,127,123,124,125,122,122,123,123,124,125,126,127,123,122,126,127,123,124,125,127,122,126,127,123,124,125,0,0,122,123,122,126,127,123,124,125,122,126,127,123,124,125,0,123,127,122,122,126,127,123,124,125,122,126,127,123,124,125,123,0,123,123,122,126,127,123,124,125,122,126,127,123,124,125,122,126,127,123,124,125,122,126,127,123,124,125,122,126,127,123,124,125,123,123,0,123,122,126,127,123,124,125,122,126,127,123,124,125,0,0,0,130,131,129,0,129,130,131,129,130,131,129,130,131,129,130,131,129,130,131,129,130,131,130,131,129,0,129,130,131,0,129,130,131,129,129,130,131,129,130,131,0,129,0,129,130,131,129,130,131,129,130,131,129,130,131,129,130,131,129,130,131,129,130,131,0,129,130,131,129,130,131,0,0,133,133,121,133,121,133,121,133,121,133,121,133,121,133,133,133,133,121,133,133,121,121,133,133,133,121,121,121,121,133,133,133,133,121,121,133,121,133,133,121,121,133,121,133,133,133,133,133,133,121,133,121,133,121,133,121,133,121,133,121,133,121,133,0,0,136,134,136,134,136,134,136,134,136,134,136,134,136,134,134,0,0,0,0,0,0,136,134,136,134,134,134,136,134,134,136,134,136,0,134,136,134,136,0,134,0,134,136,134,136,134,136,134,136,134,136,134,136,134,136,119,119,119,119,119,0,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,0,137,137,137,0,0,0,96,138,137,96,138,137,96,138,137,96,138,137,96,138,137,96,138,137,137,137,137,138,96,138,137,138,138,96,96,96,96,138,137,96,96,96,138,137,96,138,137,96,138,96,138,137,96,138,137,138,138,137,138,96,138,137,96,138,137,96,138,137,96,138,137,96,138,137,96,138,137,96,138,137,0,0,0,0,140,0,139,140,139,140,139,140,139,140,0,139,140,139,140,139,140,139,139,139,140,0,0,139,140,139,140,139,140,139,139,140,139,140,0,139,139,140,139,140,139,140,139,140,139,140,139,140,139,140,0,0,0,0,0,0,0,0,0,0,0,0,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135],"f":"``{ce{}{}}`000{c{{b{e}}}{}{}}0{{}d}``{f{{j{h}}}}`{cc{}}`4```{c{{l{eh}}}{}{}}0``{{}n}66``````{c{{A`{e}}}{}{}}0{cAb{}}8888``````````6`6````````````8888774833{Add}992219999{{AfAh}Aj}````````````:8:::99{Al{{B`{An}}}}7;66;;443;;`;;``;;;;::`7{Bbd}<{{}Bb}88{{BbBd{Bh{Bf}}}d}>>776>>`>>0````>>>>>>>>===={Bj{{j{{Bn{Bl}}}}}}{BdBd}{{BdBd}C`}=={ce{}{}}0====20000;;;;::000020000````0000{c{{b{e}}}{}{}}0{Cb{{B`{Cd}}}}{cc{}}{Cfd}04`{c{{l{eh}}}{}{}}0{CfBf}66{c{{A`{e}}}{}{}}0{cAb{}}8888{{CfBf}d}````````````````````{{}Ch}{{}Cj}{{}Cl}<<<<<<<<`{{ChCh}Ch}{{CjCj}Cj}{{ClCl}Cl}{{ChCh}d}{{CjCj}d}{{ClCl}d}543210{ChBf}{CjBf}{ClBf}```876543{ce{}{}}00000000000000000000000{c{{b{e}}}{}{}}000000000000000{ChCh}{CjCj}{ClCl}{{ce}d{}{}}00{{ChCh}Cn}{{CjCj}Cn}{{ClCl}Cn}654`{{ChCh}h}{{CjCj}h}{{ClCl}h}{{ChCh}Ch}{{CjCj}Cj}{{ClCl}Cl}{{}Ch}{{}Cj}{{}Cl}876{{Chc}d{{Db{}{{D`{Ch}}}}}}{{Cjc}d{{Db{}{{D`{Cj}}}}}}{{Clc}d{{Db{}{{D`{Cl}}}}}}{{ChDd}Aj}0000{{CjDd}Aj}0000{{ClDd}Aj}0000{cc{}}0000000{Bf{{b{Ch}}}}{Bf{{b{Cj}}}}{Bf{{b{Cl}}}}{BfCh}{BfCj}{BfCl}210{cCh{{Db{}{{D`{Ch}}}}}}{cCj{{Db{}{{D`{Cj}}}}}}{cCl{{Db{}{{D`{Cl}}}}}}{Cdd}{{Chc}dDf}{{Cjc}dDf}{{Clc}dDf}```{Dhd}4`{{ChCh}d}{{CjCj}d}{{ClCl}d}{{ChCh}Ch}{{CjCj}Cj}{{ClCl}Cl}{{ChCh}h}{{CjCj}h}{{ClCl}h}{ce{}{}}0000000{Chh}{Cjh}{Clh}210``````{BdDh}{{}Cd}{ChCh}{CjCj}{ClCl}`{c{{l{eh}}}{}{}}000000000000000{{ChCh}{{b{Cn}}}}{{CjCj}{{b{Cn}}}}{{ClCl}{{b{Cn}}}}`{Dh{{b{Bf}}}}{CdBf}`{Cdh}{DhDj}{{ChCh}d}{{CjCj}d}{{ClCl}d}{ce{}{}}000000000000000{{ChChh}d}{{CjCjh}d}{{ClClh}d}{{ChCh}Ch}{{CjCj}Cj}{{ClCl}Cl}987210`666987{c{{A`{e}}}{}{}}000000000000000{cAb{}}000000043288888888888888888888888888888888{{DhBf}d}{{CdBf}d}{DhDl}``````;;;;;;;;{c{{b{e}}}{}{}}000{Dn{{B`{E`}}}}`{E`d}{Ebd}{cc{}}0{E`{{Bh{Bf}}}}{Eb{{Bh{Bf}}}}`{ce{}{}}0{{}Eb}{c{{l{eh}}}{}{}}0002222>>>>==2222762222`````````222222222222222299999999`{Ed{{B`{Ef}}}}{Eh{{B`{Ef}}}}`7777{Efd}{Ejd}`6666{Efh}{Ejh}{BdEj}77777777{EfEl}{EjEl};;;;;;;;{c{{A`{e}}}{}{}}0000000{cAb{}}000========`========`````========{c{{b{e}}}{}{}}000{En{{B`{F`}}}}{cc{}}0{ce{}{}}0{{}Fb}{c{{l{eh}}}{}{}}000{{F`{Bh{Bf}}}Bd}{{Fb{Bh{Bf}}}Bd}4444{{F`{Bh{Bf}}}d}{{Fb{Bh{Bf}}}d};;;;::66666666````66`6666669999{{FdBdFf}Fh}0{FfFf}{{ce}d{}{}}{{FdBdFfFh}d}{{FdBdFfBd}d}0{{FdBdFfBd}{{l{FhBd}}}}=={{FdBd}Fh}6{{BdFf}Bd}>>{BdFd}====2????{{FdBdFh}d}6{{}Bd}:{ce{}{}}{c{{A`{e}}}{}{}}000{cAb{}}022222222`````````{{FjFl}Bd}{Fjh}`01``````````{{}Fn}5555{{FnFn}Fn}{{FnFn}d}10{FnFh}`21888888888888{c{{b{e}}}{}{}}0000000{FnFn}{{ce}d{}{}}{{FnFn}Cn}2{{FnFn}h}{G`{{B`{Gb}}}}891{{Fnc}d{{Db{}{{D`{Fn}}}}}}{{FnDd}Aj}0000{cc{}}000{Fh{{b{Fn}}}}{FhFn}0{cFn{{Db{}{{D`{Fn}}}}}}{{Fnc}dDf}``>?8{ce{}{}}000{Fnh}0{{}d}{{hh{B`{Gb}}}Gd}?`{{AhFn}{{b{{B`{Gd}}}}}}{c{{l{eh}}}{}{}}0000000{{FnFn}{{b{Cn}}}}{{GdFl}Bd}{Gd{{Bn{Bf}}}}{Fn{{l{hh}}}}{Gdh}`{{FnFn}d};;;;;;;;{{FnFnh}d}{{FnFn}Fn}20=2{c{{A`{e}}}{}{}}0000000{cAb{}}0002????????????????5`8```````{Gfh}`{GfBd}0{ce{}{}}00000000`000{c{{b{e}}}{}{}}00000{GhGh}{{ce}d{}{}}{{GhGh}h}{cc{}}00`555{{}{{l{{B`{Gj}}{B`{Gj}}}}}}{{}Gf}{c{{l{eh}}}{}{}}00000{{GjFl}Bd}{GfBf}{{{B`{{j{Gf}}}}}Gj}{Gjh}`<<<<<<{{Gf{B`{Gj}}}d}``={c{{A`{e}}}{}{}}00000{cAb{}}00????????????3`6{{GfBf}d}`5``{ce{}{}}0000000{c{{b{e}}}{}{}}000==11::::{{GlFl}Bd}{{GnFl}Bd}{Glh}{Gnh}5555888877555555551032{{}d}{H`n}``````````````````````1```````````````````{Hbh}{Hdh}999999999999999999999999{HbHf}{HdHh}::::::::::::{HbHb}{HdHd}{HfHf}{HhHh}{{{Hj{c}}}{{Hj{c}}}{HlHnI`IbIdIf}}{{ce}d{}{}}0000{{HbHb}Cn}{{HdHd}Cn}{{HfHf}Cn}{{HhHh}Cn}``{{HbHb}h}{{HdHd}h}{{HfHf}h}{{HhHh}h}?>{{HbDd}Aj}{{HdDd}Aj}{{HfDd}Aj}{{HhDd}Aj}{cc{}}{HfHb}{BdHb}22{HhHd}{BdHd}{HbHf}{BdHf}6{BdHh}{HdHh}88{Hf{{Bh{Bf}}}}{{{Hj{c}}}c{HlHnI`IbId}}{Hbc{}}{Hfc{}}{Hf{{Bh{Ih}}}}23{Hh{{Ij{Bd}}}}{ce{}{}}000000{{{Hj{c}}}e{HlHnI`IbId}{}}``{{cc}{{Il{c}}}{HlHnI`IbId}}{{cc}{{Hj{c}}}{HlHnI`IbId}}{{{Il{c}}}{{b{e}}}{HlHnI`IbId}{}}{c{{l{eh}}}{}{}}00000000000{HbBd}{HdBd}{{HbHb}{{b{Cn}}}}{{HdHd}{{b{Cn}}}}{{HfHf}{{b{Cn}}}}{{HhHh}{{b{Cn}}}}``;;;;;;;;;;;;{Hld}{Hfd}{Hhd}>>>>>{c{{A`{e}}}{}{}}00000000000{cAb{}}00000{ce{}{}}00000000000000000000000``````{In{{b{Hf}}}}{J`{{b{Hf}}}}{{InBd}{{b{{Bn{Hf}}}}}}{{J`Bd}{{b{{Bn{Hf}}}}}}444444444444{c{{b{e}}}{}{}}00000``{{InHf}d}{{J`Hf}d}{Jb{{j{J`}}}}{Bld}``{{BlDd}Aj}{{}{{b{Bl}}}}{Bd{{b{{Bn{Bl}}}}}}{{}d}0{Hfd}{cc{}}00{{J`HfHf}d}3{ce{}{}}00{{}In}{HfBl}{{}J`}{c{{l{eh}}}{}{}}00000```444444{c{{A`{e}}}{}{}}00000{cAb{}}00666666666666``{Jdn};;`````````````{Jfd}{{}Jh}`99999{{JhJh}Jh}{{JhJh}d}10{JhBf}`21<<<<<<<<<<<<<<<{c{{b{e}}}{}{}}000000000{JjJj}{JhJh}{{ce}d{}{}}0{{JhJh}Cn}2{{JhJh}h}{{JlJn{Bh{Bf}}}d}`{K`{{B`{{j{Jf}}}}}}:```;{{JjJj}h}3``{{Jhc}d{{Db{}{{D`{Jh}}}}}}{{JjDd}Aj}{{JhDd}Aj}0000{cc{}}0000{JlJl}{Bf{{b{Jh}}}}{BfJh}0{{{Bh{Bf}}}{{l{JfBdBd}}}}{JfJf}{cJh{{Db{}{{D`{Jh}}}}}}{{Jhc}dDf}{{JhJh}d}{{JfHdHdJh}d}{{JhJh}Jh}{{JhJh}h}{ce{}{}}0000{Jhh}0{{}Bd}{{JlJn}d}{{JlJnHh}d}`{Jfd}`{{HdHdJjJh}Jl}{{}Jf}0{JhJh}{c{{l{eh}}}{}{}}000000000`{{JhJh}{{b{Cn}}}}{{JfJl{b{{Bh{Bf}}}}}d}6{{}d}{{JhJh}d}{{JfHh}d}>>>>>>>>>>``{{JhJhh}d}```{{JhJh}Jh}30{ce{}{}}04{JfBd}{{JfHh}{{b{Ih}}}}{c{{A`{e}}}{}{}}000000000{cAb{}}00005{{JlJn}d}{{JlJnHh}d}6666666666`6666666666`````````````{{}Kb}77777{{KbKb}Kb}{{KbKb}d}10{KbBf}``21::::::::::``:::::{c{{b{e}}}{}{}}000000000{KbKb}{IhIh}{{ce}d{}{}}0{{KbKb}Cn}3{{KbKb}h}``89{{}Ih}1{Ihh}{{Kbc}d{{Db{}{{D`{Kb}}}}}}{{JnHh}{{b{Ih}}}}0{IhKb}{{KbDd}Aj}0000`{cc{}}0000{Bf{{b{Kb}}}}{BfKb}0{cKb{{Db{}{{D`{Kb}}}}}}{BdJn}{{Kbc}dDf}{{KbKb}d}{{KbKb}Kb}>{ce{}{}}0000{Flc{}}1{Kbh}0?{FlBd}{{JnHhHfKb}d}{{}Jn}{{{Bn{{Bh{Bf}}}}}Fl}{{HfKb}Ih}{Kd{{b{c}}}{}}{KbKb}{c{{l{eh}}}{}{}}000000000{{KbKb}{{b{Cn}}}}{IhHf}{Ihh}?`=========={{KbKbh}d}?{{KbKb}d}{{KbKb}Kb}{ce{}{}}02{JnBd}{{JnHh}{{b{Ih}}}}{{JnHd}{{b{Hb}}}}{{BdBfBd}{{Bn{{Bh{Bf}}}}}}{Bdc{}}0{{BdBf}Kf}{c{{A`{e}}}{}{}}000000000{cAb{}}00009{{JnHh}d}99999999999999999999=````999999999999{c{{b{e}}}{}{}}00000{KhKh}{{ce}d{}{}}{Kj{{B`{Kl}}}}{{KhKh}h}{{KhDd}{{A`{dKn}}}}0{cc{}}00{FhKh}{{{Bh{Bf}}}d}{ce{}{}}00{{}d}{{BfBfBfBf}Kh}{{}Kl}{c{{l{eh}}}{}{}}00000`444444``4{cKf{}}{KhKf}{KhFh}{c{{A`{e}}}{}{}}00000{cAb{}}00`999999999999````{{Bd{B`{L`}}}d}{{LbLd{B`{L`}}}d};;;;;;;;;;;;{{LbLd}{{b{d}}}}{c{{b{e}}}{}{}}00000{Lf{{j{{Bn{{b{Lh}}}}}}}}{Ljd}{cc{}}00{ce{}{}}00{Lb{{b{Bd}}}}{BdLj}??????`{Bdh}{{LjFl}Bd}{Ljh}`555555`>>>>>>===55555555555501````{{KhLbLb}{{b{Bd}}}}666666`66::::{Ll{{j{{Bn{{b{Ln}}}}}}}}88{Bd{{b{{l{FhFh}}}}}}288`{c{{l{eh}}}{}{}}000{Bd{{b{{Bn{Bf}}}}}}{{Bd{Bn{Bf}}}d}`{Bdd}`<<<<`{{BdFhFh}d}{c{{A`{e}}}{}{}}000{cAb{}}0????????``????{c{{b{e}}}{}{}}0`{M`d}{cc{}}{ce{}{}}{{KhLbLbFhFh}M`};;{{M`Fl}Bd}{M`h}33````887333301`333366`{Mbd}54{{KhLbLb}Mb}??{{MbFl}Bd}{Mbh}77```<<;777701>{hn}`````````````88888888;;;;99`88{{}Md}{c{{l{eh}}}{}{}}000::::{Mdd}{c{{A`{e}}}{}{}}000{cAb{}}0===={MdMf}`{{Md{B`{Mh}}}d}????````????????????{c{{b{e}}}{}{}}00000{cc{}}00`{ce{}{}}00{Mhd}{Mjd}{Mld}``{{}Mj}{{}Ml}======555555;;;;;;:::432555555`555555``555555557777`{Mnd}77`66{BdMn}????7777====<<77771`7777``````777777777777777777779999999999{{{N`{c}}}e{}{}}{Nb{{Nf{Nd}}}}1{{{N`{c}}}d{}}{Ndd}{{{j{c}}}{{N`{c}}}{}}{{{j{c}}g}e{}{}{{Nj{c}{{Nh{e}}}}}}2>>>>>{{{Nf{c}}}c{}}``>>>>>`{c{{Nf{c}}}{}}{{}Nd}{c{{j{c}}}{}}{c{{l{eh}}}{}{}}000000000{ce{}{}}000000000`{c{{A`{e}}}{}{}}000000000{cAb{}}000022222222222222222222````````````````````````````````````````{{Bd{Ij{Bd}}}Nl}`{BdNl}0{{BfFh}Nl}1{{BdBfBd}Nl}0`{{}Nl}0003{{FhLbLb}Nl}{LbNl}{{BfBd}Nl}{C`n}444{{BdFh}Nl}{{NlC`}Nl}669{{BdBd}Nl}{hNl};;;;;;81{BdC`}`````````{{}d}`{ce{}{}}1{{}Mf}111{{}{{b{{l{C`Ah}}}}}}{c{{b{e}}}{}{}}0`{Nnd}``````{O`{{B`{Ob}}}}{C`d}{cc{}}`7``{c{{l{eh}}}{}{}}0``````88``9```{c{{A`{e}}}{}{}}0{cAb{}}::`::`::::773{BdMf};33``;;`221;;;;:`````````{OdBd}{Ofd}0========================::::::::::::`{{OdBd}d}11{Oh{{j{Od}}}}{Oj{{j{Od}}}}{Old}{Ond}5;;;;;;{OnBd}{ce{}{}}00000{Bd{{l{BdBd}}}}{{}On}{{}Od}{{{B`{Ob}}Bdh}Of}{c{{l{eh}}}{}{}}00000000000{{}Ol}`{{Onc}{}A`}`777777777777`{BdBd}{OfHf}{OfBd}{c{{A`{e}}}{}{}}00000000000{cAb{}}00000<<<<<<<<<<<<2`{{BdBd}Bd}3============`````{{Ab{B`{L`}}}d}{{{B`{L`}}}d}????????????{c{{b{e}}}{}{}}00000{Ad{{j{Ab}}}}{Af{{j{{Ah{Bd{B`{Ob}}}}}}}}{Ab{{b{{B`{L`}}}}}}{{}{{b{{B`{L`}}}}}}{cc{}}00{{Bd{B`{Ob}}}d}{ce{}{}}00{{}Ab}{c{{l{eh}}}{}{}}00000{Bd{{b{{B`{Ob}}}}}}`{Bdd}444444{c{{A`{e}}}{}{}}00000{cAb{}}00666666>666666``{AjBd}077777777>>>>``{{AjBd}d}{{{B`{Ob}}{Bh{Bf}}{Bn{Kf}}}d}``{{{B`{Ob}}}{{B`{Ob}}}}<<{{AjBd}{{B`{L`}}}}4{ObBd}`{Ob{{N`{Aj}}}}==```{{{Bh{Bf}}}{{B`{Ob}}}}<<<<``>>>>````7999988>>>>>>>>```>>>>>>>>{c{{b{e}}}{}{}}000{Al{{b{{B`{L`}}}}}}`{{}Bd}{{}{{B`{Ob}}}}{{}{{b{{B`{L`}}}}}}{{}An}33{AA`{{j{Al}}}}{cc{}}0{AlMf}`{ce{}{}}0{{}Al}{c{{l{eh}}}{}{}}000{{}d}3333{Mfd}<9{c{{A`{e}}}{}{}}000{cAb{}}066666666``````{{}Nn}7{{NnNn}Nn}{{NnNn}d}10{NnFh}`21:::{Nn{{b{{l{C`Ah}}}}}}{c{{b{e}}}{}{}}0{NnNn}{{ce}d{}{}}{{NnNn}Cn}2{{NnNn}h}890{{Nnc}d{{Db{}{{D`{Nn}}}}}}{{NnDd}Aj}0000{cc{}}{Fh{{b{Nn}}}}{FhNn}0{cNn{{Db{}{{D`{Nn}}}}}}{{Nnc}dDf}>?7{ce{}{}}{Nnh}0<{c{{l{eh}}}{}{}}0{{NnNn}{{b{Cn}}}}{{NnNn}d}44{{NnNnh}d}{{NnNn}Nn}2062{c{{A`{e}}}{}{}}0{cAb{}}28888```````888888888888{c{{b{e}}}{}{}}00000{AAbAAb}{{ce}d{}{}}{{AAbAAb}h}`{cc{}}00{AAdAAb}{AAdAn}{L`Bd}`{L`{{N`{AAd}}}}{ce{}{}}00`{{{B`{Ob}}Bdh}L`}{c{{l{eh}}}{}{}}00000``222222``2`======<<<222222222222`````{{Bd{B`{L`}}}d}33333333{{}d}===={{AAfAAf}Cn}{AAh{{j{{AAj{AAf}}}}}}{{AAfAAf}h}`<<{{}Bd}0886666{{AAfAAf}{{b{Cn}}}}99995`{c{{A`{e}}}{}{}}000{cAb{}}0;;;;;;;;``777777{And}{{}n}0`{{BdBdBdBdBd}An}>>>>{c{{b{e}}}{}{}}0{{AnDd}Aj}{cc{}}{ce{}{}}``{c{{l{eh}}}{}{}}011`{{AnBd}d}``::92222`","c":[],"p":[[6,"Option",3133],[1,"unit"],[5,"DEV_NON_BLOCKING_ACCESS",0],[1,"bool"],[5,"UPIntrFreeCell",2263],[1,"tuple"],[1,"never"],[6,"Result",3134],[5,"TypeId",3135],[5,"Arguments",3136],[5,"Stdout",64],[1,"str"],[8,"Result",3136],[5,"BLOCK_DEVICE",95],[10,"BlockDevice",3137],[5,"Arc",3138],[5,"VirtIOBlock",120],[1,"usize"],[1,"u8"],[1,"slice"],[5,"QUEUE_FRAMES",148],[5,"FrameTracker",1337],[5,"Vec",3139],[1,"i32"],[5,"UART",194],[5,"NS16550a",223],[10,"CharDevice",194],[5,"IER",223],[5,"LSR",223],[5,"MCR",223],[6,"Ordering",3140],[17,"Item"],[10,"IntoIterator",3141],[5,"Formatter",3136],[10,"Hasher",3142],[5,"NS16550aRaw",223],[5,"ReadWithoutDLAB",223],[5,"WriteWithoutDLAB",223],[5,"GPU_DEVICE",552],[10,"GpuDevice",552],[5,"VirtIOGpuWrapper",552],[5,"KEYBOARD_DEVICE",606],[10,"InputDevice",606],[5,"MOUSE_DEVICE",606],[5,"VirtIOInputWrapper",606],[1,"u64"],[5,"NET_DEVICE",704],[10,"NetDevice",704],[5,"VirtIONetWrapper",704],[5,"PLIC",753],[6,"IntrTargetPriority",753],[1,"u32"],[10,"File",814],[5,"UserBuffer",1625],[5,"OpenFlags",828],[5,"ROOT_INODE",828],[5,"Inode",3143],[5,"OSInode",828],[5,"PipeRingBuffer",972],[6,"RingBufferStatus",972],[5,"Pipe",972],[5,"Stdin",1062],[5,"Stdout",1062],[5,"PanicInfo",3144],[5,"PhysAddr",1142],[5,"VirtAddr",1142],[5,"PhysPageNum",1142],[5,"VirtPageNum",1142],[5,"SimpleRange",1142],[10,"StepByOne",1142],[10,"Copy",3145],[10,"PartialEq",3140],[10,"PartialOrd",3140],[10,"Debug",3136],[10,"Clone",3146],[5,"PageTableEntry",1625],[1,"array"],[5,"SimpleRangeIterator",1142],[10,"FrameAllocator",1337],[5,"StackFrameAllocator",1337],[5,"FRAME_ALLOCATOR",1337],[5,"Layout",3147],[5,"MemorySet",1431],[5,"MapPermission",1431],[6,"MapType",1431],[5,"MapArea",1431],[5,"PageTable",1625],[5,"KERNEL_SPACE",1431],[5,"PTEFlags",1625],[5,"UserBufferIterator",1625],[5,"String",3148],[5,"IPv4",1812],[5,"LOSE_NET_STACK",1812],[5,"NetStack",1812],[5,"Error",3136],[5,"TaskControlBlock",2959],[1,"u16"],[5,"TCPPacket",3149],[5,"LISTEN_TABLE",1892],[5,"Port",1892],[5,"PortFd",1892],[5,"SOCKET_TABLE",1968],[5,"Socket",1968],[5,"TCP",2023],[5,"UDP",2055],[5,"Condvar",2098],[5,"TaskContext",2516],[10,"Mutex",2144],[5,"MutexSpin",2144],[5,"MutexBlocking",2144],[5,"Semaphore",2217],[5,"UPIntrRefMut",2263],[5,"INTR_MASKING_INFO",2263],[5,"IntrMaskingInfo",2263],[5,"UPSafeCellRaw",2263],[17,"Output"],[10,"FnOnce",3150],[1,"isize"],[5,"SignalFlags",2889],[5,"INITPROC",2457],[5,"ProcessControlBlock",2767],[5,"RecycleAllocator",2541],[5,"TaskUserRes",2541],[5,"PID_ALLOCATOR",2541],[5,"KSTACK_ALLOCATOR",2541],[5,"PidHandle",2541],[5,"KernelStack",2541],[10,"Sized",3145],[5,"TaskManager",2693],[5,"TASK_MANAGER",2693],[5,"PID2PCB",2693],[5,"BTreeMap",3151],[5,"ProcessControlBlockInner",2767],[5,"Processor",2832],[5,"TrapContext",3104],[5,"PROCESSOR",2832],[6,"TaskStatus",2959],[5,"TaskControlBlockInner",2959],[5,"TimerCondVar",3039],[5,"TIMERS",3039],[5,"BinaryHeap",3152],[8,"CharDeviceImpl",40],[8,"BlockDeviceImpl",40],[5,"VirtioHal",148],[5,"NS16550aInner",223],[5,"VirtIOInputInner",606],[5,"OSInodeInner",828],[8,"VPNRange",1142],[8,"FrameAllocatorImpl",1337],[5,"CondvarInner",2098],[5,"MutexBlockingInner",2144],[5,"SemaphoreInner",2217]],"b":[[347,"impl-Debug-for-IER"],[348,"impl-UpperHex-for-IER"],[349,"impl-Binary-for-IER"],[350,"impl-Octal-for-IER"],[351,"impl-LowerHex-for-IER"],[352,"impl-LowerHex-for-LSR"],[353,"impl-Octal-for-LSR"],[354,"impl-Debug-for-LSR"],[355,"impl-Binary-for-LSR"],[356,"impl-UpperHex-for-LSR"],[357,"impl-Binary-for-MCR"],[358,"impl-LowerHex-for-MCR"],[359,"impl-Octal-for-MCR"],[360,"impl-UpperHex-for-MCR"],[361,"impl-Debug-for-MCR"],[881,"impl-Binary-for-OpenFlags"],[882,"impl-UpperHex-for-OpenFlags"],[883,"impl-Debug-for-OpenFlags"],[884,"impl-Octal-for-OpenFlags"],[885,"impl-LowerHex-for-OpenFlags"],[1221,"impl-From%3CPhysPageNum%3E-for-PhysAddr"],[1222,"impl-From%3Cusize%3E-for-PhysAddr"],[1225,"impl-From%3CVirtPageNum%3E-for-VirtAddr"],[1226,"impl-From%3Cusize%3E-for-VirtAddr"],[1227,"impl-From%3CPhysAddr%3E-for-PhysPageNum"],[1228,"impl-From%3Cusize%3E-for-PhysPageNum"],[1230,"impl-From%3Cusize%3E-for-VirtPageNum"],[1231,"impl-From%3CVirtAddr%3E-for-VirtPageNum"],[1506,"impl-Octal-for-MapPermission"],[1507,"impl-Binary-for-MapPermission"],[1508,"impl-LowerHex-for-MapPermission"],[1509,"impl-Debug-for-MapPermission"],[1510,"impl-UpperHex-for-MapPermission"],[1698,"impl-Octal-for-PTEFlags"],[1699,"impl-UpperHex-for-PTEFlags"],[1700,"impl-LowerHex-for-PTEFlags"],[1701,"impl-Debug-for-PTEFlags"],[1702,"impl-Binary-for-PTEFlags"],[1838,"impl-Debug-for-IPv4"],[1839,"impl-Display-for-IPv4"],[2920,"impl-Octal-for-SignalFlags"],[2921,"impl-Debug-for-SignalFlags"],[2922,"impl-UpperHex-for-SignalFlags"],[2923,"impl-LowerHex-for-SignalFlags"],[2924,"impl-Binary-for-SignalFlags"]]}]\ +]')); +if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; +else if (window.initSearch) window.initSearch(searchIndex); diff --git a/ch9/settings.html b/ch9/settings.html index 44145da1d..63ab9477d 100644 --- a/ch9/settings.html +++ b/ch9/settings.html @@ -1 +1,2 @@ -Rustdoc settings

Rustdoc settings

Back
\ No newline at end of file +Settings +

Rustdoc settings

Back
\ No newline at end of file diff --git a/ch9/src-files.js b/ch9/src-files.js index 52acc4412..44e1329b0 100644 --- a/ch9/src-files.js +++ b/ch9/src-files.js @@ -1,4 +1,4 @@ -var srcIndex = JSON.parse('{\ -"os":["",[["boards",[],["qemu.rs"]],["drivers",[["block",[],["mod.rs","virtio_blk.rs"]],["bus",[],["mod.rs","virtio.rs"]],["chardev",[],["mod.rs","ns16550a.rs"]],["gpu",[],["mod.rs"]],["input",[],["mod.rs"]],["net",[],["mod.rs"]]],["mod.rs","plic.rs"]],["fs",[],["inode.rs","mod.rs","pipe.rs","stdio.rs"]],["mm",[],["address.rs","frame_allocator.rs","heap_allocator.rs","memory_set.rs","mod.rs","page_table.rs"]],["net",[],["mod.rs","port_table.rs","socket.rs","tcp.rs","udp.rs"]],["sync",[],["condvar.rs","mod.rs","mutex.rs","semaphore.rs","up.rs"]],["syscall",[],["fs.rs","gui.rs","input.rs","mod.rs","net.rs","process.rs","sync.rs","thread.rs"]],["task",[],["context.rs","id.rs","manager.rs","mod.rs","process.rs","processor.rs","signal.rs","switch.rs","task.rs"]],["trap",[],["context.rs","mod.rs"]]],["config.rs","console.rs","lang_items.rs","main.rs","sbi.rs","timer.rs"]]\ -}'); +var srcIndex = new Map(JSON.parse('[\ +["os",["",[["boards",[],["qemu.rs"]],["drivers",[["block",[],["mod.rs","virtio_blk.rs"]],["bus",[],["mod.rs","virtio.rs"]],["chardev",[],["mod.rs","ns16550a.rs"]],["gpu",[],["mod.rs"]],["input",[],["mod.rs"]],["net",[],["mod.rs"]]],["mod.rs","plic.rs"]],["fs",[],["inode.rs","mod.rs","pipe.rs","stdio.rs"]],["mm",[],["address.rs","frame_allocator.rs","heap_allocator.rs","memory_set.rs","mod.rs","page_table.rs"]],["net",[],["mod.rs","port_table.rs","socket.rs","tcp.rs","udp.rs"]],["sync",[],["condvar.rs","mod.rs","mutex.rs","semaphore.rs","up.rs"]],["syscall",[],["fs.rs","gui.rs","input.rs","mod.rs","net.rs","process.rs","sync.rs","thread.rs"]],["task",[],["context.rs","id.rs","manager.rs","mod.rs","process.rs","processor.rs","signal.rs","switch.rs","task.rs"]],["trap",[],["context.rs","mod.rs"]]],["config.rs","console.rs","lang_items.rs","main.rs","sbi.rs","timer.rs"]]]\ +]')); createSrcSidebar(); diff --git a/ch9/src/os/boards/qemu.rs.html b/ch9/src/os/boards/qemu.rs.html index 5b33b63d4..0967a9696 100644 --- a/ch9/src/os/boards/qemu.rs.html +++ b/ch9/src/os/boards/qemu.rs.html @@ -1,4 +1,6 @@ -qemu.rs - source
1
+qemu.rs - source
+    
1
 2
 3
 4
@@ -102,7 +104,7 @@
         6 => MOUSE_DEVICE.handle_irq(),
         8 => BLOCK_DEVICE.handle_irq(),
         10 => UART.handle_irq(),
-        _ => panic!("unsupported IRQ {}", intr_src_id),
+        _ => panic!("unsupported IRQ {}", intr_src_id),
     }
     plic.complete(0, IntrTargetPriority::Supervisor, intr_src_id);
 }
diff --git a/ch9/src/os/config.rs.html b/ch9/src/os/config.rs.html
index 0a939f995..a5acc762c 100644
--- a/ch9/src/os/config.rs.html
+++ b/ch9/src/os/config.rs.html
@@ -1,4 +1,6 @@
-config.rs - source
1
+config.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/console.rs.html b/ch9/src/os/console.rs.html
index 4a33d2ebd..03f284bd1 100644
--- a/ch9/src/os/console.rs.html
+++ b/ch9/src/os/console.rs.html
@@ -1,4 +1,6 @@
-console.rs - source
1
+console.rs - source
+    
1
 2
 3
 4
@@ -59,7 +61,7 @@
 #[macro_export]
 macro_rules! println {
     ($fmt: literal $(, $($arg: tt)+)?) => {
-        $crate::console::print(format_args!(concat!($fmt, "\n") $(, $($arg)+)?))
+        $crate::console::print(format_args!(concat!($fmt, "\n") $(, $($arg)+)?))
     }
 }
 
\ No newline at end of file diff --git a/ch9/src/os/drivers/block/mod.rs.html b/ch9/src/os/drivers/block/mod.rs.html index aea2f3038..0e8168788 100644 --- a/ch9/src/os/drivers/block/mod.rs.html +++ b/ch9/src/os/drivers/block/mod.rs.html @@ -1,4 +1,6 @@ -mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -52,6 +54,6 @@
         block_device.read_block(i as usize, &mut read_buffer);
         assert_eq!(write_buffer, read_buffer);
     }
-    println!("block device test passed!");
+    println!("block device test passed!");
 }
 
\ No newline at end of file diff --git a/ch9/src/os/drivers/block/virtio_blk.rs.html b/ch9/src/os/drivers/block/virtio_blk.rs.html index 39cc47b8b..c1168e132 100644 --- a/ch9/src/os/drivers/block/virtio_blk.rs.html +++ b/ch9/src/os/drivers/block/virtio_blk.rs.html @@ -1,4 +1,6 @@ -virtio_blk.rs - source
1
+virtio_blk.rs - source
+    
1
 2
 3
 4
@@ -97,7 +99,7 @@
 const VIRTIO0: usize = 0x10008000;
 
 pub struct VirtIOBlock {
-    virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>,
+    virtio_blk: UPIntrFreeCell<VirtIOBlk<'static, VirtioHal>>,
     condvars: BTreeMap<u16, Condvar>,
 }
 
@@ -114,13 +116,13 @@
             assert_eq!(
                 resp.status(),
                 RespStatus::Ok,
-                "Error when reading VirtIOBlk"
+                "Error when reading VirtIOBlk"
             );
         } else {
             self.virtio_blk
                 .exclusive_access()
                 .read_block(block_id, buf)
-                .expect("Error when reading VirtIOBlk");
+                .expect("Error when reading VirtIOBlk");
         }
     }
     fn write_block(&self, block_id: usize, buf: &[u8]) {
@@ -135,13 +137,13 @@
             assert_eq!(
                 resp.status(),
                 RespStatus::Ok,
-                "Error when writing VirtIOBlk"
+                "Error when writing VirtIOBlk"
             );
         } else {
             self.virtio_blk
                 .exclusive_access()
                 .write_block(block_id, buf)
-                .expect("Error when writing VirtIOBlk");
+                .expect("Error when writing VirtIOBlk");
         }
     }
     fn handle_irq(&self) {
diff --git a/ch9/src/os/drivers/bus/mod.rs.html b/ch9/src/os/drivers/bus/mod.rs.html
index eabb17049..f45ebd59b 100644
--- a/ch9/src/os/drivers/bus/mod.rs.html
+++ b/ch9/src/os/drivers/bus/mod.rs.html
@@ -1,3 +1,5 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 
pub mod virtio;
 
\ No newline at end of file diff --git a/ch9/src/os/drivers/bus/virtio.rs.html b/ch9/src/os/drivers/bus/virtio.rs.html index c93ea0371..c54be8f6f 100644 --- a/ch9/src/os/drivers/bus/virtio.rs.html +++ b/ch9/src/os/drivers/bus/virtio.rs.html @@ -1,4 +1,6 @@ -virtio.rs - source
1
+virtio.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/drivers/chardev/mod.rs.html b/ch9/src/os/drivers/chardev/mod.rs.html
index 86ed05967..2d77f6012 100644
--- a/ch9/src/os/drivers/chardev/mod.rs.html
+++ b/ch9/src/os/drivers/chardev/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/drivers/chardev/ns16550a.rs.html b/ch9/src/os/drivers/chardev/ns16550a.rs.html
index 6f82ebfe3..67aa1af56 100644
--- a/ch9/src/os/drivers/chardev/ns16550a.rs.html
+++ b/ch9/src/os/drivers/chardev/ns16550a.rs.html
@@ -1,4 +1,6 @@
-ns16550a.rs - source
1
+ns16550a.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/drivers/gpu/mod.rs.html b/ch9/src/os/drivers/gpu/mod.rs.html
index 0fa28c1fe..b491396c2 100644
--- a/ch9/src/os/drivers/gpu/mod.rs.html
+++ b/ch9/src/os/drivers/gpu/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -85,10 +87,10 @@
 );
 
 pub struct VirtIOGpuWrapper {
-    gpu: UPIntrFreeCell<VirtIOGpu<'static, VirtioHal>>,
-    fb: &'static [u8],
+    gpu: UPIntrFreeCell<VirtIOGpu<'static, VirtioHal>>,
+    fb: &'static [u8],
 }
-static BMP_DATA: &[u8] = include_bytes!("../../assert/mouse.bmp");
+static BMP_DATA: &[u8] = include_bytes!("../../assert/mouse.bmp");
 impl VirtIOGpuWrapper {
     pub fn new() -> Self {
         unsafe {
diff --git a/ch9/src/os/drivers/input/mod.rs.html b/ch9/src/os/drivers/input/mod.rs.html
index 416b45448..22b569c7c 100644
--- a/ch9/src/os/drivers/input/mod.rs.html
+++ b/ch9/src/os/drivers/input/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -93,7 +95,7 @@
 const VIRTIO6: usize = 0x10006000;
 
 struct VirtIOInputInner {
-    virtio_input: VirtIOInput<'static, VirtioHal>,
+    virtio_input: VirtIOInput<'static, VirtioHal>,
     events: VecDeque<u64>,
 }
 
diff --git a/ch9/src/os/drivers/mod.rs.html b/ch9/src/os/drivers/mod.rs.html
index 3aa45e14d..30c8b1824 100644
--- a/ch9/src/os/drivers/mod.rs.html
+++ b/ch9/src/os/drivers/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -11,7 +13,6 @@
 11
 12
 13
-14
 
pub mod block;
 pub mod bus;
 pub mod chardev;
@@ -22,7 +23,6 @@
 
 pub use block::BLOCK_DEVICE;
 pub use bus::*;
-pub use chardev::UART;
 pub use gpu::*;
 pub use input::*;
 pub use net::*;
diff --git a/ch9/src/os/drivers/net/mod.rs.html b/ch9/src/os/drivers/net/mod.rs.html
index 3c37c2cc2..515873119 100644
--- a/ch9/src/os/drivers/net/mod.rs.html
+++ b/ch9/src/os/drivers/net/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -63,21 +65,21 @@
     fn receive(&self, data: &mut [u8]) -> usize;
 }
 
-pub struct VirtIONetWrapper(UPIntrFreeCell<VirtIONet<'static, VirtioHal>>);
+pub struct VirtIONetWrapper(UPIntrFreeCell<VirtIONet<'static, VirtioHal>>);
 
 impl NetDevice for VirtIONetWrapper {
     fn transmit(&self, data: &[u8]) {
         self.0
             .exclusive_access()
             .send(data)
-            .expect("can't send data")
+            .expect("can't send data")
     }
 
     fn receive(&self, data: &mut [u8]) -> usize {
         self.0
             .exclusive_access()
             .recv(data)
-            .expect("can't receive data")
+            .expect("can't receive data")
     }
 }
 
@@ -85,7 +87,7 @@
     pub fn new() -> Self {
         unsafe {
             let virtio = VirtIONet::<VirtioHal>::new(&mut *(VIRTIO8 as *mut VirtIOHeader))
-                .expect("can't create net device by virtio");
+                .expect("can't create net device by virtio");
             VirtIONetWrapper(UPIntrFreeCell::new(virtio))
         }
     }
diff --git a/ch9/src/os/drivers/plic.rs.html b/ch9/src/os/drivers/plic.rs.html
index 0b4a3b8fb..a922b3751 100644
--- a/ch9/src/os/drivers/plic.rs.html
+++ b/ch9/src/os/drivers/plic.rs.html
@@ -1,4 +1,6 @@
-plic.rs - source
1
+plic.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/fs/inode.rs.html b/ch9/src/os/fs/inode.rs.html
index 1cdf343c1..2320a5319 100644
--- a/ch9/src/os/fs/inode.rs.html
+++ b/ch9/src/os/fs/inode.rs.html
@@ -1,4 +1,6 @@
-inode.rs - source
1
+inode.rs - source
+    
1
 2
 3
 4
@@ -190,11 +192,11 @@
 }
 
 pub fn list_apps() {
-    println!("/**** APPS ****");
+    println!("/**** APPS ****");
     for app in ROOT_INODE.ls() {
-        println!("{}", app);
+        println!("{}", app);
     }
-    println!("**************/")
+    println!("**************/")
 }
 
 bitflags! {
diff --git a/ch9/src/os/fs/mod.rs.html b/ch9/src/os/fs/mod.rs.html
index dc42cd074..f9116144f 100644
--- a/ch9/src/os/fs/mod.rs.html
+++ b/ch9/src/os/fs/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -27,7 +29,7 @@
     fn write(&self, buf: UserBuffer) -> usize;
 }
 
-pub use inode::{list_apps, open_file, OSInode, OpenFlags, ROOT_INODE};
-pub use pipe::{make_pipe, Pipe};
+pub use inode::{list_apps, open_file, OpenFlags};
+pub use pipe::make_pipe;
 pub use stdio::{Stdin, Stdout};
 
\ No newline at end of file diff --git a/ch9/src/os/fs/pipe.rs.html b/ch9/src/os/fs/pipe.rs.html index c7e689814..22febadca 100644 --- a/ch9/src/os/fs/pipe.rs.html +++ b/ch9/src/os/fs/pipe.rs.html @@ -1,4 +1,6 @@ -pipe.rs - source
1
+pipe.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/fs/stdio.rs.html b/ch9/src/os/fs/stdio.rs.html
index 034068ac6..f36ed13fb 100644
--- a/ch9/src/os/fs/stdio.rs.html
+++ b/ch9/src/os/fs/stdio.rs.html
@@ -1,4 +1,6 @@
-stdio.rs - source
1
+stdio.rs - source
+    
1
 2
 3
 4
@@ -61,7 +63,7 @@
     }
     fn read(&self, mut user_buf: UserBuffer) -> usize {
         assert_eq!(user_buf.len(), 1);
-        //println!("before UART.read() in Stdin::read()");
+        //println!("before UART.read() in Stdin::read()");
         let ch = UART.read();
         unsafe {
             user_buf.buffers[0].as_mut_ptr().write_volatile(ch);
@@ -69,7 +71,7 @@
         1
     }
     fn write(&self, _user_buf: UserBuffer) -> usize {
-        panic!("Cannot write to stdin!");
+        panic!("Cannot write to stdin!");
     }
 }
 
@@ -81,11 +83,11 @@
         true
     }
     fn read(&self, _user_buf: UserBuffer) -> usize {
-        panic!("Cannot read from stdout!");
+        panic!("Cannot read from stdout!");
     }
     fn write(&self, user_buf: UserBuffer) -> usize {
         for buffer in user_buf.buffers.iter() {
-            print!("{}", core::str::from_utf8(*buffer).unwrap());
+            print!("{}", core::str::from_utf8(*buffer).unwrap());
         }
         user_buf.len()
     }
diff --git a/ch9/src/os/lang_items.rs.html b/ch9/src/os/lang_items.rs.html
index 4e849c7d1..f75d72acd 100644
--- a/ch9/src/os/lang_items.rs.html
+++ b/ch9/src/os/lang_items.rs.html
@@ -1,4 +1,6 @@
-lang_items.rs - source
1
+lang_items.rs - source
+    
1
 2
 3
 4
@@ -46,13 +48,13 @@
 fn panic(info: &PanicInfo) -> ! {
     if let Some(location) = info.location() {
         error!(
-            "[kernel] Panicked at {}:{} {}",
+            "[kernel] Panicked at {}:{} {}",
             location.file(),
             location.line(),
             info.message().unwrap()
         );
     } else {
-        error!("[kernel] Panicked: {}", info.message().unwrap());
+        error!("[kernel] Panicked: {}", info.message().unwrap());
     }
     unsafe {
         backtrace();
@@ -63,15 +65,15 @@
 unsafe fn backtrace() {
     let mut fp: usize;
     let stop = current_kstack_top();
-    asm!("mv {}, s0", out(reg) fp);
-    println!("---START BACKTRACE---");
+    asm!("mv {}, s0", out(reg) fp);
+    println!("---START BACKTRACE---");
     for i in 0..10 {
         if fp == stop {
             break;
         }
-        println!("#{}:ra={:#x}", i, *((fp - 8) as *const usize));
+        println!("#{}:ra={:#x}", i, *((fp - 8) as *const usize));
         fp = *((fp - 16) as *const usize);
     }
-    println!("---END   BACKTRACE---");
+    println!("---END   BACKTRACE---");
 }
 
\ No newline at end of file diff --git a/ch9/src/os/main.rs.html b/ch9/src/os/main.rs.html index 52fcea855..56061b148 100644 --- a/ch9/src/os/main.rs.html +++ b/ch9/src/os/main.rs.html @@ -1,4 +1,6 @@ -main.rs - source
1
+main.rs - source
+    
1
 2
 3
 4
@@ -86,7 +88,7 @@
 #[macro_use]
 extern crate bitflags;
 
-#[path = "boards/qemu.rs"]
+#[path = "boards/qemu.rs"]
 mod board;
 
 #[macro_use]
@@ -107,10 +109,10 @@
 use crate::drivers::chardev::CharDevice;
 use crate::drivers::chardev::UART;
 
-core::arch::global_asm!(include_str!("entry.asm"));
+core::arch::global_asm!(include_str!("entry.asm"));
 
 fn clear_bss() {
-    extern "C" {
+    extern "C" {
         fn sbss();
         fn ebss();
     }
@@ -133,13 +135,13 @@
     clear_bss();
     mm::init();
     UART.init();
-    println!("KERN: init gpu");
+    println!("KERN: init gpu");
     let _gpu = GPU_DEVICE.clone();
-    println!("KERN: init keyboard");
+    println!("KERN: init keyboard");
     let _keyboard = KEYBOARD_DEVICE.clone();
-    println!("KERN: init mouse");
+    println!("KERN: init mouse");
     let _mouse = MOUSE_DEVICE.clone();
-    println!("KERN: init trap");
+    println!("KERN: init trap");
     trap::init();
     trap::enable_timer_interrupt();
     timer::set_next_trigger();
@@ -148,6 +150,6 @@
     task::add_initproc();
     *DEV_NON_BLOCKING_ACCESS.exclusive_access() = true;
     task::run_tasks();
-    panic!("Unreachable in rust_main!");
+    panic!("Unreachable in rust_main!");
 }
 
\ No newline at end of file diff --git a/ch9/src/os/mm/address.rs.html b/ch9/src/os/mm/address.rs.html index 73bf10fd2..40c77a469 100644 --- a/ch9/src/os/mm/address.rs.html +++ b/ch9/src/os/mm/address.rs.html @@ -1,4 +1,6 @@ -address.rs - source
1
+address.rs - source
+    
1
 2
 3
 4
@@ -297,23 +299,23 @@
 /// Debugging
 
 impl Debug for VirtAddr {
-    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
-        f.write_fmt(format_args!("VA:{:#x}", self.0))
+    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+        f.write_fmt(format_args!("VA:{:#x}", self.0))
     }
 }
 impl Debug for VirtPageNum {
-    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
-        f.write_fmt(format_args!("VPN:{:#x}", self.0))
+    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+        f.write_fmt(format_args!("VPN:{:#x}", self.0))
     }
 }
 impl Debug for PhysAddr {
-    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
-        f.write_fmt(format_args!("PA:{:#x}", self.0))
+    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+        f.write_fmt(format_args!("PA:{:#x}", self.0))
     }
 }
 impl Debug for PhysPageNum {
-    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
-        f.write_fmt(format_args!("PPN:{:#x}", self.0))
+    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+        f.write_fmt(format_args!("PPN:{:#x}", self.0))
     }
 }
 
@@ -438,23 +440,23 @@
 }
 
 impl PhysAddr {
-    pub fn get_ref<T>(&self) -> &'static T {
+    pub fn get_ref<T>(&self) -> &'static T {
         unsafe { (self.0 as *const T).as_ref().unwrap() }
     }
-    pub fn get_mut<T>(&self) -> &'static mut T {
+    pub fn get_mut<T>(&self) -> &'static mut T {
         unsafe { (self.0 as *mut T).as_mut().unwrap() }
     }
 }
 impl PhysPageNum {
-    pub fn get_pte_array(&self) -> &'static mut [PageTableEntry] {
+    pub fn get_pte_array(&self) -> &'static mut [PageTableEntry] {
         let pa: PhysAddr = (*self).into();
         unsafe { core::slice::from_raw_parts_mut(pa.0 as *mut PageTableEntry, 512) }
     }
-    pub fn get_bytes_array(&self) -> &'static mut [u8] {
+    pub fn get_bytes_array(&self) -> &'static mut [u8] {
         let pa: PhysAddr = (*self).into();
         unsafe { core::slice::from_raw_parts_mut(pa.0 as *mut u8, 4096) }
     }
-    pub fn get_mut<T>(&self) -> &'static mut T {
+    pub fn get_mut<T>(&self) -> &'static mut T {
         let pa: PhysAddr = (*self).into();
         pa.get_mut()
     }
@@ -487,7 +489,7 @@
     T: StepByOne + Copy + PartialEq + PartialOrd + Debug,
 {
     pub fn new(start: T, end: T) -> Self {
-        assert!(start <= end, "start {:?} > end {:?}!", start, end);
+        assert!(start <= end, "start {:?} > end {:?}!", start, end);
         Self { l: start, r: end }
     }
     pub fn get_start(&self) -> T {
diff --git a/ch9/src/os/mm/frame_allocator.rs.html b/ch9/src/os/mm/frame_allocator.rs.html
index ac291aaf1..6b47f1c51 100644
--- a/ch9/src/os/mm/frame_allocator.rs.html
+++ b/ch9/src/os/mm/frame_allocator.rs.html
@@ -1,4 +1,6 @@
-frame_allocator.rs - source
1
+frame_allocator.rs - source
+    
1
 2
 3
 4
@@ -183,8 +185,8 @@
 }
 
 impl Debug for FrameTracker {
-    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
-        f.write_fmt(format_args!("FrameTracker:PPN={:#x}", self.ppn.0))
+    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+        f.write_fmt(format_args!("FrameTracker:PPN={:#x}", self.ppn.0))
     }
 }
 
@@ -211,7 +213,7 @@
     pub fn init(&mut self, l: PhysPageNum, r: PhysPageNum) {
         self.current = l.0;
         self.end = r.0;
-        // println!("last {} Physical Frames.", self.end - self.current);
+        // println!("last {} Physical Frames.", self.end - self.current);
     }
 }
 impl FrameAllocator for StackFrameAllocator {
@@ -246,7 +248,7 @@
         let ppn = ppn.0;
         // validity check
         if ppn >= self.current || self.recycled.iter().any(|&v| v == ppn) {
-            panic!("Frame ppn={:#x} has not been allocated!", ppn);
+            panic!("Frame ppn={:#x} has not been allocated!", ppn);
         }
         // recycle
         self.recycled.push(ppn);
@@ -261,7 +263,7 @@
 }
 
 pub fn init_frame_allocator() {
-    extern "C" {
+    extern "C" {
         fn ekernel();
     }
     FRAME_ALLOCATOR.exclusive_access().init(
@@ -293,17 +295,17 @@
     let mut v: Vec<FrameTracker> = Vec::new();
     for i in 0..5 {
         let frame = frame_alloc().unwrap();
-        println!("{:?}", frame);
+        println!("{:?}", frame);
         v.push(frame);
     }
     v.clear();
     for i in 0..5 {
         let frame = frame_alloc().unwrap();
-        println!("{:?}", frame);
+        println!("{:?}", frame);
         v.push(frame);
     }
     drop(v);
-    println!("frame_allocator_test passed!");
+    println!("frame_allocator_test passed!");
 }
 
 #[allow(unused)]
@@ -311,15 +313,15 @@
     let mut v: Vec<FrameTracker> = Vec::new();
     let frames = frame_alloc_more(5).unwrap();
     for frame in &frames {
-        println!("{:?}", frame);
+        println!("{:?}", frame);
     }
     v.extend(frames);
     v.clear();
     let frames = frame_alloc_more(5).unwrap();
     for frame in &frames {
-        println!("{:?}", frame);
+        println!("{:?}", frame);
     }
     drop(v);
-    println!("frame_allocator_test passed!");
+    println!("frame_allocator_test passed!");
 }
 
\ No newline at end of file diff --git a/ch9/src/os/mm/heap_allocator.rs.html b/ch9/src/os/mm/heap_allocator.rs.html index ef5a0e09d..446dac799 100644 --- a/ch9/src/os/mm/heap_allocator.rs.html +++ b/ch9/src/os/mm/heap_allocator.rs.html @@ -1,4 +1,6 @@ -heap_allocator.rs - source
1
+heap_allocator.rs - source
+    
1
 2
 3
 4
@@ -51,7 +53,7 @@
 
 #[alloc_error_handler]
 pub fn handle_alloc_error(layout: core::alloc::Layout) -> ! {
-    panic!("Heap allocation error, layout = {:?}", layout);
+    panic!("Heap allocation error, layout = {:?}", layout);
 }
 
 static mut HEAP_SPACE: [u8; KERNEL_HEAP_SIZE] = [0; KERNEL_HEAP_SIZE];
@@ -68,7 +70,7 @@
 pub fn heap_test() {
     use alloc::boxed::Box;
     use alloc::vec::Vec;
-    extern "C" {
+    extern "C" {
         fn sbss();
         fn ebss();
     }
@@ -86,6 +88,6 @@
     }
     assert!(bss_range.contains(&(v.as_ptr() as usize)));
     drop(v);
-    println!("heap_test passed!");
+    println!("heap_test passed!");
 }
 
\ No newline at end of file diff --git a/ch9/src/os/mm/memory_set.rs.html b/ch9/src/os/mm/memory_set.rs.html index ecdd9e203..c35c0f973 100644 --- a/ch9/src/os/mm/memory_set.rs.html +++ b/ch9/src/os/mm/memory_set.rs.html @@ -1,4 +1,6 @@ -memory_set.rs - source
1
+memory_set.rs - source
+    
1
 2
 3
 4
@@ -391,7 +393,7 @@
 use lazy_static::*;
 use riscv::register::satp;
 
-extern "C" {
+extern "C" {
     fn stext();
     fn etext();
     fn srodata();
@@ -475,14 +477,14 @@
         // map trampoline
         memory_set.map_trampoline();
         // map kernel sections
-        // println!(".text [{:#x}, {:#x})", stext as usize, etext as usize);
-        // println!(".rodata [{:#x}, {:#x})", srodata as usize, erodata as usize);
-        // println!(".data [{:#x}, {:#x})", sdata as usize, edata as usize);
+        // println!(".text [{:#x}, {:#x})", stext as usize, etext as usize);
+        // println!(".rodata [{:#x}, {:#x})", srodata as usize, erodata as usize);
+        // println!(".data [{:#x}, {:#x})", sdata as usize, edata as usize);
         // println!(
-        //     ".bss [{:#x}, {:#x})",
+        //     ".bss [{:#x}, {:#x})",
         //     sbss_with_stack as usize, ebss as usize
         // );
-        // println!("mapping .text section");
+        // println!("mapping .text section");
         memory_set.push(
             MapArea::new(
                 (stext as usize).into(),
@@ -492,7 +494,7 @@
             ),
             None,
         );
-        // println!("mapping .rodata section");
+        // println!("mapping .rodata section");
         memory_set.push(
             MapArea::new(
                 (srodata as usize).into(),
@@ -502,7 +504,7 @@
             ),
             None,
         );
-        // println!("mapping .data section");
+        // println!("mapping .data section");
         memory_set.push(
             MapArea::new(
                 (sdata as usize).into(),
@@ -512,7 +514,7 @@
             ),
             None,
         );
-        // println!("mapping .bss section");
+        // println!("mapping .bss section");
         memory_set.push(
             MapArea::new(
                 (sbss_with_stack as usize).into(),
@@ -522,7 +524,7 @@
             ),
             None,
         );
-        // println!("mapping physical memory");
+        // println!("mapping physical memory");
         memory_set.push(
             MapArea::new(
                 (ekernel as usize).into(),
@@ -532,7 +534,7 @@
             ),
             None,
         );
-        //println!("mapping memory-mapped registers");
+        //println!("mapping memory-mapped registers");
         for pair in MMIO {
             memory_set.push(
                 MapArea::new(
@@ -556,7 +558,7 @@
         let elf = xmas_elf::ElfFile::new(elf_data).unwrap();
         let elf_header = elf.header;
         let magic = elf_header.pt1.magic;
-        assert_eq!(magic, [0x7f, 0x45, 0x4c, 0x46], "invalid elf!");
+        assert_eq!(magic, [0x7f, 0x45, 0x4c, 0x46], "invalid elf!");
         let ph_count = elf_header.pt2.ph_count();
         let mut max_end_vpn = VirtPageNum(0);
         for i in 0..ph_count {
@@ -615,7 +617,7 @@
         let satp = self.page_table.token();
         unsafe {
             satp::write(satp);
-            asm!("sfence.vma");
+            asm!("sfence.vma");
         }
     }
     pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry> {
@@ -756,6 +758,6 @@
         .translate(mid_data.floor())
         .unwrap()
         .executable(),);
-    println!("remap_test passed!");
+    println!("remap_test passed!");
 }
 
\ No newline at end of file diff --git a/ch9/src/os/mm/mod.rs.html b/ch9/src/os/mm/mod.rs.html index 133ea0e80..b0e5a65a8 100644 --- a/ch9/src/os/mm/mod.rs.html +++ b/ch9/src/os/mm/mod.rs.html @@ -1,4 +1,6 @@ -mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -19,7 +21,6 @@
 19
 20
 21
-22
 
mod address;
 mod frame_allocator;
 mod heap_allocator;
@@ -29,12 +30,11 @@
 pub use address::VPNRange;
 pub use address::{PhysAddr, PhysPageNum, StepByOne, VirtAddr, VirtPageNum};
 pub use frame_allocator::{frame_alloc, frame_alloc_more, frame_dealloc, FrameTracker};
-pub use memory_set::remap_test;
 pub use memory_set::{kernel_token, MapArea, MapPermission, MapType, MemorySet, KERNEL_SPACE};
 use page_table::PTEFlags;
 pub use page_table::{
     translated_byte_buffer, translated_ref, translated_refmut, translated_str, PageTable,
-    PageTableEntry, UserBuffer, UserBufferIterator,
+    PageTableEntry, UserBuffer,
 };
 
 pub fn init() {
diff --git a/ch9/src/os/mm/page_table.rs.html b/ch9/src/os/mm/page_table.rs.html
index a3d10e5a0..974e5a300 100644
--- a/ch9/src/os/mm/page_table.rs.html
+++ b/ch9/src/os/mm/page_table.rs.html
@@ -1,4 +1,6 @@
-page_table.rs - source
1
+page_table.rs - source
+    
1
 2
 3
 4
@@ -306,7 +308,7 @@
     frames: Vec<FrameTracker>,
 }
 
-/// Assume that it won't oom when creating/mapping.
+/// Assume that it won't oom when creating/mapping.
 impl PageTable {
     pub fn new() -> Self {
         let frame = frame_alloc().unwrap();
@@ -361,13 +363,13 @@
     #[allow(unused)]
     pub fn map(&mut self, vpn: VirtPageNum, ppn: PhysPageNum, flags: PTEFlags) {
         let pte = self.find_pte_create(vpn).unwrap();
-        assert!(!pte.is_valid(), "vpn {:?} is mapped before mapping", vpn);
+        assert!(!pte.is_valid(), "vpn {:?} is mapped before mapping", vpn);
         *pte = PageTableEntry::new(ppn, flags | PTEFlags::V);
     }
     #[allow(unused)]
     pub fn unmap(&mut self, vpn: VirtPageNum) {
         let pte = self.find_pte(vpn).unwrap();
-        assert!(pte.is_valid(), "vpn {:?} is invalid before unmapping", vpn);
+        assert!(pte.is_valid(), "vpn {:?} is invalid before unmapping", vpn);
         *pte = PageTableEntry::empty();
     }
     pub fn translate(&self, vpn: VirtPageNum) -> Option<PageTableEntry> {
@@ -386,7 +388,7 @@
     }
 }
 
-pub fn translated_byte_buffer(token: usize, ptr: *const u8, len: usize) -> Vec<&'static mut [u8]> {
+pub fn translated_byte_buffer(token: usize, ptr: *const u8, len: usize) -> Vec<&'static mut [u8]> {
     let page_table = PageTable::from_token(token);
     let mut start = ptr as usize;
     let end = start + len;
@@ -427,7 +429,7 @@
     string
 }
 
-pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T {
+pub fn translated_ref<T>(token: usize, ptr: *const T) -> &'static T {
     let page_table = PageTable::from_token(token);
     page_table
         .translate_va(VirtAddr::from(ptr as usize))
@@ -435,7 +437,7 @@
         .get_ref()
 }
 
-pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T {
+pub fn translated_refmut<T>(token: usize, ptr: *mut T) -> &'static mut T {
     let page_table = PageTable::from_token(token);
     let va = ptr as usize;
     page_table
@@ -445,11 +447,11 @@
 }
 
 pub struct UserBuffer {
-    pub buffers: Vec<&'static mut [u8]>,
+    pub buffers: Vec<&'static mut [u8]>,
 }
 
 impl UserBuffer {
-    pub fn new(buffers: Vec<&'static mut [u8]>) -> Self {
+    pub fn new(buffers: Vec<&'static mut [u8]>) -> Self {
         Self { buffers }
     }
     pub fn len(&self) -> usize {
@@ -474,7 +476,7 @@
 }
 
 pub struct UserBufferIterator {
-    buffers: Vec<&'static mut [u8]>,
+    buffers: Vec<&'static mut [u8]>,
     current_buffer: usize,
     current_idx: usize,
 }
diff --git a/ch9/src/os/net/mod.rs.html b/ch9/src/os/net/mod.rs.html
index 4c753c5fe..f17fefe76 100644
--- a/ch9/src/os/net/mod.rs.html
+++ b/ch9/src/os/net/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -179,7 +181,7 @@
         .exclusive_access()
         .analysis(&recv_buf[..len]);
 
-    // println!("[kernel] receive a packet");
+    // println!("[kernel] receive a packet");
     // hexdump(&recv_buf[..len]);
 
     match packet {
@@ -187,7 +189,7 @@
             let lose_stack = LOSE_NET_STACK.0.exclusive_access();
             let reply_packet = arp_packet
                 .reply_packet(lose_stack.ip, lose_stack.mac)
-                .expect("can't build reply");
+                .expect("can't build reply");
             let reply_data = reply_packet.build_data();
             NET_DEVICE.transmit(&reply_data)
         }
@@ -240,34 +242,34 @@
 #[allow(unused)]
 pub fn hexdump(data: &[u8]) {
     const PRELAND_WIDTH: usize = 70;
-    println!("[kernel] {:-^1$}", " hexdump ", PRELAND_WIDTH);
+    println!("[kernel] {:-^1$}", " hexdump ", PRELAND_WIDTH);
     for offset in (0..data.len()).step_by(16) {
-        print!("[kernel] ");
+        print!("[kernel] ");
         for i in 0..16 {
             if offset + i < data.len() {
-                print!("{:02x} ", data[offset + i]);
+                print!("{:02x} ", data[offset + i]);
             } else {
-                print!("{:02} ", "");
+                print!("{:02} ", "");
             }
         }
 
-        print!("{:>6}", ' ');
+        print!("{:>6}", ' ');
 
         for i in 0..16 {
             if offset + i < data.len() {
                 let c = data[offset + i];
                 if c >= 0x20 && c <= 0x7e {
-                    print!("{}", c as char);
+                    print!("{}", c as char);
                 } else {
-                    print!(".");
+                    print!(".");
                 }
             } else {
-                print!("{:02} ", "");
+                print!("{:02} ", "");
             }
         }
 
-        println!("");
+        println!("");
     }
-    println!("[kernel] {:-^1$}", " hexdump end ", PRELAND_WIDTH);
+    println!("[kernel] {:-^1$}", " hexdump end ", PRELAND_WIDTH);
 }
 
\ No newline at end of file diff --git a/ch9/src/os/net/port_table.rs.html b/ch9/src/os/net/port_table.rs.html index 1d659922f..d893eba92 100644 --- a/ch9/src/os/net/port_table.rs.html +++ b/ch9/src/os/net/port_table.rs.html @@ -1,4 +1,6 @@ -port_table.rs - source
1
+port_table.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/net/socket.rs.html b/ch9/src/os/net/socket.rs.html
index 68e0ba3cd..7bc1cf64b 100644
--- a/ch9/src/os/net/socket.rs.html
+++ b/ch9/src/os/net/socket.rs.html
@@ -1,4 +1,6 @@
-socket.rs - source
1
+socket.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/net/tcp.rs.html b/ch9/src/os/net/tcp.rs.html
index 7f93adc15..2d4db83db 100644
--- a/ch9/src/os/net/tcp.rs.html
+++ b/ch9/src/os/net/tcp.rs.html
@@ -1,4 +1,6 @@
-tcp.rs - source
1
+tcp.rs - source
+    
1
 2
 3
 4
@@ -138,7 +140,7 @@
 
 impl TCP {
     pub fn new(target: IPv4, sport: u16, dport: u16, seq: u32, ack: u32) -> Self {
-        let index = add_socket(target, sport, dport).expect("can't add socket");
+        let index = add_socket(target, sport, dport).expect("can't add socket");
 
         Self {
             target,
diff --git a/ch9/src/os/net/udp.rs.html b/ch9/src/os/net/udp.rs.html
index 4d7c85e31..39d9ede32 100644
--- a/ch9/src/os/net/udp.rs.html
+++ b/ch9/src/os/net/udp.rs.html
@@ -1,4 +1,6 @@
-udp.rs - source
1
+udp.rs - source
+    
1
 2
 3
 4
@@ -112,7 +114,7 @@
 
 impl UDP {
     pub fn new(target: IPv4, sport: u16, dport: u16) -> Self {
-        let index = add_socket(target, sport, dport).expect("can't add socket");
+        let index = add_socket(target, sport, dport).expect("can't add socket");
 
         Self {
             target,
diff --git a/ch9/src/os/sbi.rs.html b/ch9/src/os/sbi.rs.html
index bd58d2c43..3ad74dcfd 100644
--- a/ch9/src/os/sbi.rs.html
+++ b/ch9/src/os/sbi.rs.html
@@ -1,4 +1,6 @@
-sbi.rs - source
1
+sbi.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/sync/condvar.rs.html b/ch9/src/os/sync/condvar.rs.html
index c1923c30b..3a631ba4c 100644
--- a/ch9/src/os/sync/condvar.rs.html
+++ b/ch9/src/os/sync/condvar.rs.html
@@ -1,4 +1,6 @@
-condvar.rs - source
1
+condvar.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/sync/mod.rs.html b/ch9/src/os/sync/mod.rs.html
index 2a2fcf078..c47a92a88 100644
--- a/ch9/src/os/sync/mod.rs.html
+++ b/ch9/src/os/sync/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/sync/mutex.rs.html b/ch9/src/os/sync/mutex.rs.html
index b6a9dae37..ea19e3f75 100644
--- a/ch9/src/os/sync/mutex.rs.html
+++ b/ch9/src/os/sync/mutex.rs.html
@@ -1,4 +1,6 @@
-mutex.rs - source
1
+mutex.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/sync/semaphore.rs.html b/ch9/src/os/sync/semaphore.rs.html
index 51db1be32..fabf0291b 100644
--- a/ch9/src/os/sync/semaphore.rs.html
+++ b/ch9/src/os/sync/semaphore.rs.html
@@ -1,4 +1,6 @@
-semaphore.rs - source
1
+semaphore.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/sync/up.rs.html b/ch9/src/os/sync/up.rs.html
index f4ed82412..cb462f180 100644
--- a/ch9/src/os/sync/up.rs.html
+++ b/ch9/src/os/sync/up.rs.html
@@ -1,4 +1,6 @@
-up.rs - source
1
+up.rs - source
+    
1
 2
 3
 4
@@ -167,7 +169,7 @@
         }
     }
     /// Panic if the data has been borrowed.
-    pub fn exclusive_access(&self) -> RefMut<'_, T> {
+    pub fn exclusive_access(&self) -> RefMut<'_, T> {
         self.inner.borrow_mut()
     }
 }
@@ -236,7 +238,7 @@
 
 unsafe impl<T> Sync for UPIntrFreeCell<T> {}
 
-pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);
+pub struct UPIntrRefMut<'a, T>(Option<RefMut<'a, T>>);
 
 impl<T> UPIntrFreeCell<T> {
     pub unsafe fn new(value: T) -> Self {
@@ -246,7 +248,7 @@
     }
 
     /// Panic if the data has been borrowed.
-    pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T> {
+    pub fn exclusive_access(&self) -> UPIntrRefMut<'_, T> {
         INTR_MASKING_INFO.get_mut().enter();
         UPIntrRefMut(Some(self.inner.borrow_mut()))
     }
@@ -260,20 +262,20 @@
     }
 }
 
-impl<'a, T> Drop for UPIntrRefMut<'a, T> {
+impl<'a, T> Drop for UPIntrRefMut<'a, T> {
     fn drop(&mut self) {
         self.0 = None;
         INTR_MASKING_INFO.get_mut().exit();
     }
 }
 
-impl<'a, T> Deref for UPIntrRefMut<'a, T> {
+impl<'a, T> Deref for UPIntrRefMut<'a, T> {
     type Target = T;
     fn deref(&self) -> &Self::Target {
         self.0.as_ref().unwrap().deref()
     }
 }
-impl<'a, T> DerefMut for UPIntrRefMut<'a, T> {
+impl<'a, T> DerefMut for UPIntrRefMut<'a, T> {
     fn deref_mut(&mut self) -> &mut Self::Target {
         self.0.as_mut().unwrap().deref_mut()
     }
diff --git a/ch9/src/os/syscall/fs.rs.html b/ch9/src/os/syscall/fs.rs.html
index efdd06d98..1363cc048 100644
--- a/ch9/src/os/syscall/fs.rs.html
+++ b/ch9/src/os/syscall/fs.rs.html
@@ -1,4 +1,6 @@
-fs.rs - source
1
+fs.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/syscall/gui.rs.html b/ch9/src/os/syscall/gui.rs.html
index d130133fd..2624617d7 100644
--- a/ch9/src/os/syscall/gui.rs.html
+++ b/ch9/src/os/syscall/gui.rs.html
@@ -1,4 +1,6 @@
-gui.rs - source
1
+gui.rs - source
+    
1
 2
 3
 4
@@ -41,7 +43,7 @@
 pub fn sys_framebuffer() -> isize {
     let fb = GPU_DEVICE.get_framebuffer();
     let len = fb.len();
-    // println!("[kernel] FrameBuffer: addr 0x{:X}, len {}", fb.as_ptr() as usize , len);
+    // println!("[kernel] FrameBuffer: addr 0x{:X}, len {}", fb.as_ptr() as usize , len);
     let fb_start_pa = PhysAddr::from(fb.as_ptr() as usize);
     assert!(fb_start_pa.aligned());
     let fb_start_ppn = fb_start_pa.floor();
diff --git a/ch9/src/os/syscall/input.rs.html b/ch9/src/os/syscall/input.rs.html
index 61c394b62..6510657ab 100644
--- a/ch9/src/os/syscall/input.rs.html
+++ b/ch9/src/os/syscall/input.rs.html
@@ -1,4 +1,6 @@
-input.rs - source
1
+input.rs - source
+    
1
 2
 3
 4
@@ -45,7 +47,7 @@
 
 use crate::drivers::chardev::UART;
 
-/// check UART's read-buffer is empty or not
+/// check UART's read-buffer is empty or not
 pub fn sys_key_pressed() -> isize {
     let res = !UART.read_buffer_is_empty();
     if res {
diff --git a/ch9/src/os/syscall/mod.rs.html b/ch9/src/os/syscall/mod.rs.html
index c15b1fb61..fc690d027 100644
--- a/ch9/src/os/syscall/mod.rs.html
+++ b/ch9/src/os/syscall/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -175,7 +177,7 @@
         SYSCALL_FRAMEBUFFER_FLUSH => sys_framebuffer_flush(),
         SYSCALL_EVENT_GET => sys_event_get(),
         SYSCALL_KEY_PRESSED => sys_key_pressed(),
-        _ => panic!("Unsupported syscall_id: {}", syscall_id),
+        _ => panic!("Unsupported syscall_id: {}", syscall_id),
     }
 }
 
\ No newline at end of file diff --git a/ch9/src/os/syscall/net.rs.html b/ch9/src/os/syscall/net.rs.html index 4412598c6..1e126a407 100644 --- a/ch9/src/os/syscall/net.rs.html +++ b/ch9/src/os/syscall/net.rs.html @@ -1,4 +1,6 @@ -net.rs - source
1
+net.rs - source
+    
1
 2
 3
 4
@@ -86,7 +88,7 @@
 
 // accept a tcp connection
 pub fn sys_accept(port_index: usize) -> isize {
-    println!("accepting port {}", port_index);
+    println!("accepting port {}", port_index);
 
     let task = current_task().unwrap();
     accept(port_index, task);
diff --git a/ch9/src/os/syscall/process.rs.html b/ch9/src/os/syscall/process.rs.html
index 3a1e6f8ba..d7553a4ad 100644
--- a/ch9/src/os/syscall/process.rs.html
+++ b/ch9/src/os/syscall/process.rs.html
@@ -1,4 +1,6 @@
-process.rs - source
1
+process.rs - source
+    
1
 2
 3
 4
@@ -128,7 +130,7 @@
 
 pub fn sys_exit(exit_code: i32) -> ! {
     exit_current_and_run_next(exit_code);
-    panic!("Unreachable in sys_exit!");
+    panic!("Unreachable in sys_exit!");
 }
 
 pub fn sys_yield() -> isize {
diff --git a/ch9/src/os/syscall/sync.rs.html b/ch9/src/os/syscall/sync.rs.html
index 13128ce8d..a76f273c3 100644
--- a/ch9/src/os/syscall/sync.rs.html
+++ b/ch9/src/os/syscall/sync.rs.html
@@ -1,4 +1,6 @@
-sync.rs - source
1
+sync.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/syscall/thread.rs.html b/ch9/src/os/syscall/thread.rs.html
index ee9ef8dc2..7aa2d38e9 100644
--- a/ch9/src/os/syscall/thread.rs.html
+++ b/ch9/src/os/syscall/thread.rs.html
@@ -1,4 +1,6 @@
-thread.rs - source
1
+thread.rs - source
+    
1
 2
 3
 4
@@ -139,7 +141,7 @@
 
 /// thread does not exist, return -1
 /// thread has not exited yet, return -2
-/// otherwise, return thread's exit code
+/// otherwise, return thread's exit code
 pub fn sys_waittid(tid: usize) -> i32 {
     let task = current_task().unwrap();
     let process = task.process.upgrade().unwrap();
diff --git a/ch9/src/os/task/context.rs.html b/ch9/src/os/task/context.rs.html
index 4c00e93bd..0dbd35bcd 100644
--- a/ch9/src/os/task/context.rs.html
+++ b/ch9/src/os/task/context.rs.html
@@ -1,4 +1,6 @@
-context.rs - source
1
+context.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/task/id.rs.html b/ch9/src/os/task/id.rs.html
index d4f46f3f9..5713be293 100644
--- a/ch9/src/os/task/id.rs.html
+++ b/ch9/src/os/task/id.rs.html
@@ -1,4 +1,6 @@
-id.rs - source
1
+id.rs - source
+    
1
 2
 3
 4
@@ -258,7 +260,7 @@
         assert!(id < self.current);
         assert!(
             !self.recycled.iter().any(|i| *i == id),
-            "id {} has been deallocated!",
+            "id {} has been deallocated!",
             id
         );
         self.recycled.push(id);
diff --git a/ch9/src/os/task/manager.rs.html b/ch9/src/os/task/manager.rs.html
index 0d17f8bbb..833aa8786 100644
--- a/ch9/src/os/task/manager.rs.html
+++ b/ch9/src/os/task/manager.rs.html
@@ -1,4 +1,6 @@
-manager.rs - source
1
+manager.rs - source
+    
1
 2
 3
 4
@@ -119,7 +121,7 @@
 pub fn remove_from_pid2process(pid: usize) {
     let mut map = PID2PCB.exclusive_access();
     if map.remove(&pid).is_none() {
-        panic!("cannot find pid {} in pid2task!", pid);
+        panic!("cannot find pid {} in pid2task!", pid);
     }
 }
 
\ No newline at end of file diff --git a/ch9/src/os/task/mod.rs.html b/ch9/src/os/task/mod.rs.html index b693e40ea..1039db606 100644 --- a/ch9/src/os/task/mod.rs.html +++ b/ch9/src/os/task/mod.rs.html @@ -1,4 +1,6 @@ -mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -217,7 +219,7 @@
     schedule(task_cx_ptr);
 }
 
-/// Exit the current 'Running' task and run the next task in task list.
+/// Exit the current 'Running' task and run the next task in task list.
 pub fn exit_current_and_run_next(exit_code: i32) {
     let task = take_current_task().unwrap();
     let mut task_inner = task.inner_exclusive_access();
@@ -236,7 +238,7 @@
         let pid = process.getpid();
         if pid == IDLE_PID {
             println!(
-                "[kernel] Idle process exit with exit_code {} ...",
+                "[kernel] Idle process exit with exit_code {} ...",
                 exit_code
             );
             if exit_code != 0 {
@@ -295,7 +297,7 @@
 
 lazy_static! {
     pub static ref INITPROC: Arc<ProcessControlBlock> = {
-        let inode = open_file("initproc", OpenFlags::RDONLY).unwrap();
+        let inode = open_file("initproc", OpenFlags::RDONLY).unwrap();
         let v = inode.read_all();
         ProcessControlBlock::new(v.as_slice())
     };
@@ -305,7 +307,7 @@
     let _initproc = INITPROC.clone();
 }
 
-pub fn check_signals_of_current() -> Option<(i32, &'static str)> {
+pub fn check_signals_of_current() -> Option<(i32, &'static str)> {
     let process = current_process();
     let process_inner = process.inner_exclusive_access();
     process_inner.signals.check_error()
diff --git a/ch9/src/os/task/process.rs.html b/ch9/src/os/task/process.rs.html
index 5c60f0199..f5b24bad2 100644
--- a/ch9/src/os/task/process.rs.html
+++ b/ch9/src/os/task/process.rs.html
@@ -1,4 +1,6 @@
-process.rs - source
1
+process.rs - source
+    
1
 2
 3
 4
@@ -325,7 +327,7 @@
 }
 
 impl ProcessControlBlock {
-    pub fn inner_exclusive_access(&self) -> UPIntrRefMut<'_, ProcessControlBlockInner> {
+    pub fn inner_exclusive_access(&self) -> UPIntrRefMut<'_, ProcessControlBlockInner> {
         self.inner.exclusive_access()
     }
 
@@ -446,7 +448,7 @@
     pub fn fork(self: &Arc<Self>) -> Arc<Self> {
         let mut parent = self.inner_exclusive_access();
         assert_eq!(parent.thread_count(), 1);
-        // clone parent's memory_set completely including trampoline/ustacks/trap_cxs
+        // clone parent's memory_set completely including trampoline/ustacks/trap_cxs
         let memory_set = MemorySet::from_existed_user(&parent.memory_set);
         // alloc a pid
         let pid = pid_alloc();
diff --git a/ch9/src/os/task/processor.rs.html b/ch9/src/os/task/processor.rs.html
index 8a32ed0eb..3df7ebe7a 100644
--- a/ch9/src/os/task/processor.rs.html
+++ b/ch9/src/os/task/processor.rs.html
@@ -1,4 +1,6 @@
-processor.rs - source
1
+processor.rs - source
+    
1
 2
 3
 4
@@ -154,7 +156,7 @@
                 __switch(idle_task_cx_ptr, next_task_cx_ptr);
             }
         } else {
-            println!("no tasks available in run_tasks");
+            println!("no tasks available in run_tasks");
         }
     }
 }
@@ -176,7 +178,7 @@
     task.get_user_token()
 }
 
-pub fn current_trap_cx() -> &'static mut TrapContext {
+pub fn current_trap_cx() -> &'static mut TrapContext {
     current_task()
         .unwrap()
         .inner_exclusive_access()
diff --git a/ch9/src/os/task/signal.rs.html b/ch9/src/os/task/signal.rs.html
index 1b75b8663..2546704f9 100644
--- a/ch9/src/os/task/signal.rs.html
+++ b/ch9/src/os/task/signal.rs.html
@@ -1,4 +1,6 @@
-signal.rs - source
1
+signal.rs - source
+    
1
 2
 3
 4
@@ -40,17 +42,17 @@
 }
 
 impl SignalFlags {
-    pub fn check_error(&self) -> Option<(i32, &'static str)> {
+    pub fn check_error(&self) -> Option<(i32, &'static str)> {
         if self.contains(Self::SIGINT) {
-            Some((-2, "Killed, SIGINT=2"))
+            Some((-2, "Killed, SIGINT=2"))
         } else if self.contains(Self::SIGILL) {
-            Some((-4, "Illegal Instruction, SIGILL=4"))
+            Some((-4, "Illegal Instruction, SIGILL=4"))
         } else if self.contains(Self::SIGABRT) {
-            Some((-6, "Aborted, SIGABRT=6"))
+            Some((-6, "Aborted, SIGABRT=6"))
         } else if self.contains(Self::SIGFPE) {
-            Some((-8, "Erroneous Arithmetic Operation, SIGFPE=8"))
+            Some((-8, "Erroneous Arithmetic Operation, SIGFPE=8"))
         } else if self.contains(Self::SIGSEGV) {
-            Some((-11, "Segmentation Fault, SIGSEGV=11"))
+            Some((-11, "Segmentation Fault, SIGSEGV=11"))
         } else {
             None
         }
diff --git a/ch9/src/os/task/switch.rs.html b/ch9/src/os/task/switch.rs.html
index 86bf02352..e969f6b7d 100644
--- a/ch9/src/os/task/switch.rs.html
+++ b/ch9/src/os/task/switch.rs.html
@@ -1,4 +1,6 @@
-switch.rs - source
1
+switch.rs - source
+    
1
 2
 3
 4
@@ -9,9 +11,9 @@
 
use super::TaskContext;
 use core::arch::global_asm;
 
-global_asm!(include_str!("switch.S"));
+global_asm!(include_str!("switch.S"));
 
-extern "C" {
+extern "C" {
     pub fn __switch(current_task_cx_ptr: *mut TaskContext, next_task_cx_ptr: *const TaskContext);
 }
 
\ No newline at end of file diff --git a/ch9/src/os/task/task.rs.html b/ch9/src/os/task/task.rs.html index 77a9be459..c4f8c754f 100644 --- a/ch9/src/os/task/task.rs.html +++ b/ch9/src/os/task/task.rs.html @@ -1,4 +1,6 @@ -task.rs - source
1
+task.rs - source
+    
1
 2
 3
 4
@@ -96,7 +98,7 @@
 }
 
 impl TaskControlBlock {
-    pub fn inner_exclusive_access(&self) -> UPIntrRefMut<'_, TaskControlBlockInner> {
+    pub fn inner_exclusive_access(&self) -> UPIntrRefMut<'_, TaskControlBlockInner> {
         self.inner.exclusive_access()
     }
 
@@ -116,7 +118,7 @@
 }
 
 impl TaskControlBlockInner {
-    pub fn get_trap_cx(&self) -> &'static mut TrapContext {
+    pub fn get_trap_cx(&self) -> &'static mut TrapContext {
         self.trap_cx_ppn.get_mut()
     }
 
diff --git a/ch9/src/os/timer.rs.html b/ch9/src/os/timer.rs.html
index 40f7653f2..becfd01e8 100644
--- a/ch9/src/os/timer.rs.html
+++ b/ch9/src/os/timer.rs.html
@@ -1,4 +1,6 @@
-timer.rs - source
1
+timer.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/trap/context.rs.html b/ch9/src/os/trap/context.rs.html
index 2c37da9c7..50411913d 100644
--- a/ch9/src/os/trap/context.rs.html
+++ b/ch9/src/os/trap/context.rs.html
@@ -1,4 +1,6 @@
-context.rs - source
1
+context.rs - source
+    
1
 2
 3
 4
diff --git a/ch9/src/os/trap/mod.rs.html b/ch9/src/os/trap/mod.rs.html
index 0db4aab63..cce82fc80 100644
--- a/ch9/src/os/trap/mod.rs.html
+++ b/ch9/src/os/trap/mod.rs.html
@@ -1,4 +1,6 @@
-mod.rs - source
1
+mod.rs - source
+    
1
 2
 3
 4
@@ -183,14 +185,14 @@
     sie, sscratch, sstatus, stval, stvec,
 };
 
-global_asm!(include_str!("trap.S"));
+global_asm!(include_str!("trap.S"));
 
 pub fn init() {
     set_kernel_trap_entry();
 }
 
 fn set_kernel_trap_entry() {
-    extern "C" {
+    extern "C" {
         fn __alltraps();
         fn __alltraps_k();
     }
@@ -230,7 +232,7 @@
     set_kernel_trap_entry();
     let scause = scause::read();
     let stval = stval::read();
-    // println!("into {:?}", scause.cause());
+    // println!("into {:?}", scause.cause());
     match scause.cause() {
         Trap::Exception(Exception::UserEnvCall) => {
             // jump to next instruction anyway
@@ -253,7 +255,7 @@
         | Trap::Exception(Exception::LoadPageFault) => {
             /*
             println!(
-                "[kernel] {:?} in application, bad addr = {:#x}, bad instruction = {:#x}, kernel killed it.",
+                "[kernel] {:?} in application, bad addr = {:#x}, bad instruction = {:#x}, kernel killed it.",
                 scause.cause(),
                 stval,
                 current_trap_cx().sepc,
@@ -274,7 +276,7 @@
         }
         _ => {
             panic!(
-                "Unsupported trap {:?}, stval = {:#x}!",
+                "Unsupported trap {:?}, stval = {:#x}!",
                 scause.cause(),
                 stval
             );
@@ -282,7 +284,7 @@
     }
     // check signals
     if let Some((errno, msg)) = check_signals_of_current() {
-        println!("[kernel] {}", msg);
+        println!("[kernel] {}", msg);
         exit_current_and_run_next(errno);
     }
     trap_return();
@@ -294,19 +296,19 @@
     set_user_trap_entry();
     let trap_cx_user_va = current_trap_cx_user_va();
     let user_satp = current_user_token();
-    extern "C" {
+    extern "C" {
         fn __alltraps();
         fn __restore();
     }
     let restore_va = __restore as usize - __alltraps as usize + TRAMPOLINE;
-    //println!("before return");
+    //println!("before return");
     unsafe {
         asm!(
-            "fence.i",
-            "jr {restore_va}",
+            "fence.i",
+            "jr {restore_va}",
             restore_va = in(reg) restore_va,
-            in("a0") trap_cx_user_va,
-            in("a1") user_satp,
+            in("a0") trap_cx_user_va,
+            in("a1") user_satp,
             options(noreturn)
         );
     }
@@ -327,7 +329,7 @@
         }
         _ => {
             panic!(
-                "Unsupported trap from kernel: {:?}, stval = {:#x}!",
+                "Unsupported trap from kernel: {:?}, stval = {:#x}!",
                 scause.cause(),
                 stval
             );
diff --git a/ch9/static.files/main-0b2e2def73e61cbe.js b/ch9/static.files/main-0b2e2def73e61cbe.js
new file mode 100644
index 000000000..a195dccb0
--- /dev/null
+++ b/ch9/static.files/main-0b2e2def73e61cbe.js
@@ -0,0 +1,11 @@
+"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function blurHandler(event,parentElem,hideCallback){if(!parentElem.contains(document.activeElement)&&!parentElem.contains(event.relatedTarget)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerText=`Crate ${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElem=document.getElementById(implId);if(implElem&&implElem.parentElement.tagName==="SUMMARY"&&implElem.parentElement.parentElement.tagName==="DETAILS"){onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/([^-]+)-([0-9]+)/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0)}})}}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("opaque","opaque-types","Opaque Types");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","));for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
"+window.NOTABLE_TRAITS[notable_ty]+"
"}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
"+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
"+x[1]+"
").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

"+x+"

").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px")},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/ch9/static.files/main-c5bd66d33317d69f.js b/ch9/static.files/main-c5bd66d33317d69f.js deleted file mode 100644 index 43133d66e..000000000 --- a/ch9/static.files/main-c5bd66d33317d69f.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function elemIsInParent(elem,parent){while(elem&&elem!==document.body){if(elem===parent){return true}elem=elem.parentElement}return false}function blurHandler(event,parentElem,hideCallback){if(!elemIsInParent(document.activeElement,parentElem)&&!elemIsInParent(event.relatedTarget,parentElem)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar&&locationTitle){const mobileTitle=document.createElement("h2");mobileTitle.innerHTML=locationTitle.innerHTML;mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

"+searchState.loadingText+"

";searchState.showResults(search)},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","));for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
"+window.NOTABLE_TRAITS[notable_ty]+"
"}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,e)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!elemIsInParent(ev.relatedTarget,window.CURRENT_TOOLTIP_ELEMENT)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ -the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
"+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
"+x[1]+"
").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

Keyboard Shortcuts

"+shortcuts+"
";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ - restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ - enum, trait, type, macro, \ - and const.","Search functions by type signature (e.g., vec -> usize or \ - -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for functions that accept or return \ - slices and \ - arrays by writing \ - square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

"+x+"

").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

Search Tricks

"+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/ch9/static.files/noscript-04d5337699b92874.css b/ch9/static.files/noscript-04d5337699b92874.css new file mode 100644 index 000000000..fbd55f57d --- /dev/null +++ b/ch9/static.files/noscript-04d5337699b92874.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/ch9/static.files/noscript-5d8b3c7633ad77ba.css b/ch9/static.files/noscript-5d8b3c7633ad77ba.css deleted file mode 100644 index 8c63ef065..000000000 --- a/ch9/static.files/noscript-5d8b3c7633ad77ba.css +++ /dev/null @@ -1 +0,0 @@ - #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);}@media (prefers-color-scheme:dark){:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);}} \ No newline at end of file diff --git a/ch9/static.files/rustdoc-4e54bb2b497cc83f.css b/ch9/static.files/rustdoc-4e54bb2b497cc83f.css new file mode 100644 index 000000000..ce5efae45 --- /dev/null +++ b/ch9/static.files/rustdoc-4e54bb2b497cc83f.css @@ -0,0 +1,24 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;margin-right:0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 -16px 0 -16px;text-align:center;}.sidebar-crate h2 a{display:block;margin:0 calc(-24px + 0.25rem) 0 -0.5rem;padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.5rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;margin-top:calc((-16px + 0.57rem ) / 2 );}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button{margin-left:4px;display:flex;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus,#sidebar-button>a:hover,#sidebar-button>a:focus{border-color:var(--settings-button-border-focus);}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,\ + ');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#copy-path,#help-button{display:none;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"]{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/ch9/static.files/rustdoc-fa3bb1812debf86c.css b/ch9/static.files/rustdoc-fa3bb1812debf86c.css deleted file mode 100644 index 2dd5cebca..000000000 --- a/ch9/static.files/rustdoc-fa3bb1812debf86c.css +++ /dev/null @@ -1,10 +0,0 @@ - :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.sub-logo-container,.logo-container{line-height:0;display:block;}.sub-logo-container{margin-right:32px;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;}.rustdoc.src .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;z-index:1;}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}#src-sidebar-toggle>button:hover,#src-sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.src .sidebar>*:not(#src-sidebar-toggle){visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:300px;}.src-sidebar-expanded .src .sidebar>*:not(#src-sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ - ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:2;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ - \ - ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{min-height:36px;display:flex;padding:3px;margin-bottom:5px;align-items:center;vertical-align:text-bottom;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}#src-sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;width:33px;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#src-sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.src-sidebar-expanded #src-sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{max-width:100vw;width:100vw;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;margin-bottom:var(--nav-sub-mobile-padding);}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"]{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a,:root[data-theme="ayu"] #source-sidebar>.title{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img{filter:invert(100);} \ No newline at end of file diff --git a/ch9/static.files/search-5f5ec5419eadd0c9.js b/ch9/static.files/search-5f5ec5419eadd0c9.js deleted file mode 100644 index e25c1820e..000000000 --- a/ch9/static.files/search-5f5ec5419eadd0c9.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias","generic",];const longItemTypes=["module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","primitive type","assoc type","constant","assoc const","union","foreign type","keyword","existential type","attribute macro","derive macro","trait alias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const TY_GENERIC=itemTypes.indexOf("generic");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let currentResults;let typeNameIdMap;const ALIASES=new Map();let typeNameIdOfArray;let typeNameIdOfSlice;let typeNameIdOfArrayOrSlice;function buildTypeMapIndex(name){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){return typeNameIdMap.get(name)}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,id);return id}}function isWhitespace(c){return" \t\n\r".indexOf(c)!==-1}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return",>-]".indexOf(c)!==-1}function isStopCharacter(c){return isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","}function isPathSeparator(c){return c===":"||isWhitespace(c)}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(!isWhitespace(c)){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}return{name:"never",id:null,fullPath:["never"],pathWithoutLast:[],pathLast:"never",generics:[],typeFilter:"primitive",}}if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(path.includes("::::")){throw["Unexpected ","::::"]}else if(path.includes(" ::")){throw["Unexpected "," ::"]}else if(path.includes(":: ")){throw["Unexpected ",":: "]}const pathSegments=path.split(/::|\s+/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast:pathSegments[pathSegments.length-1],generics:generics,typeFilter,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let start=parserState.pos;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",","," or ",endChar,...extra,", found ",c,]}throw["Expected ",",",...extra,", found ",c,]}const posBefore=parserState.pos;start=parserState.pos;getNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;parserState.typeFilter=oldTypeFilter}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;let start=parserState.pos;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}throw["Unexpected ",c]}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}else if(query.elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=query.elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;foundStopChar=true;continue}else if(isWhitespace(c)){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;start=parserState.pos;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}}userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){if(results.size===0){return[]}const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=aaa.item.deprecated;b=bbb.item.deprecated;if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of result_list){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(result_list)}function checkGenerics(fnType,queryElem,whereClause,mgensInout){return unifyFunctionTypes(fnType.generics,queryElem.generics,whereClause,mgensInout,mgens=>{if(mgensInout){for(const[fid,qid]of mgens.entries()){mgensInout.set(fid,qid)}}return true})}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb){let mgens=new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;let fl=fnTypesIn.length;let fnTypes=fnTypesIn.slice();const backtracking=[];let i=0;let j=0;const backtrack=()=>{while(backtracking.length!==0){const{fnTypesScratch,mgensScratch,queryElemsOffset,fnTypesOffset,unbox,}=backtracking.pop();mgens=new Map(mgensScratch);const fnType=fnTypesScratch[fnTypesOffset];const queryElem=queryElems[queryElemsOffset];if(unbox){if(fnType.id<0){if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}mgens.set(fnType.id,0)}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;fnTypes=fnTypesScratch.toSpliced(fnTypesOffset,1,...generics);fl=fnTypes.length;i=queryElemsOffset-1}else{if(fnType.id<0){if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}mgens.set(fnType.id,queryElem.id)}fnTypes=fnTypesScratch.slice();fl=fnTypes.length;const tmp=fnTypes[queryElemsOffset];fnTypes[queryElemsOffset]=fnTypes[fnTypesOffset];fnTypes[fnTypesOffset]=tmp;i=queryElemsOffset}return true}return false};for(i=0;i!==ql;++i){const queryElem=queryElems[i];const matchCandidates=[];let fnTypesScratch=null;let mgensScratch=null;for(j=i;j!==fl;++j){const fnType=fnTypes[j];if(unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens)){if(!fnTypesScratch){fnTypesScratch=fnTypes.slice()}unifyFunctionTypes(fnType.generics,queryElem.generics,whereClause,mgens,mgensScratch=>{matchCandidates.push({fnTypesScratch,mgensScratch,queryElemsOffset:i,fnTypesOffset:j,unbox:false,});return false})}if(unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens)){if(!fnTypesScratch){fnTypesScratch=fnTypes.slice()}if(!mgensScratch){mgensScratch=new Map(mgens)}backtracking.push({fnTypesScratch,mgensScratch,queryElemsOffset:i,fnTypesOffset:j,unbox:true,})}}if(matchCandidates.length===0){if(backtrack()){continue}else{return false}}const{fnTypesOffset:candidate,mgensScratch:mgensNew}=matchCandidates.pop();if(fnTypes[candidate].id<0&&queryElems[i].id<0){mgens.set(fnTypes[candidate].id,queryElems[i].id)}for(const[fid,qid]of mgensNew){mgens.set(fid,qid)}const tmp=fnTypes[candidate];fnTypes[candidate]=fnTypes[i];fnTypes[i]=tmp;for(const otherCandidate of matchCandidates){backtracking.push(otherCandidate)}while(i===(ql-1)&&solutionCb&&!solutionCb(mgens)){if(!backtrack()){return false}}}return true}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgens.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(fnType.id!==queryElem.id){return false}if(fnType.generics.length===0&&queryElem.generics.length!==0){return false}const queryElemPathLength=queryElem.pathWithoutLast.length;if(queryElemPathLength>0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i=0){if(!whereClause){return false}if(mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause)}else if(fnType.generics&&fnType.generics.length>0){return checkIfInList(fnType.generics,queryElem,whereClause)}return false}function checkIfInList(list,elem,whereClause){for(const entry of list){if(checkType(entry,elem,whereClause)){return true}}return false}function checkType(row,elem,whereClause){if(row.id===null){return row.generics.length>0?checkIfInList(row.generics,elem,whereClause):false}if(row.id<0&&elem.id>=0){const gid=(-row.id)-1;return checkIfInList(whereClause[gid],elem,whereClause)}if(row.id<0&&elem.id<0){return true}const matchesExact=row.id===elem.id;const matchesArrayOrSlice=elem.id===typeNameIdOfArrayOrSlice&&(row.id===typeNameIdOfSlice||row.id===typeNameIdOfArray);if((matchesExact||matchesArrayOrSlice)&&typePassesFilter(elem.typeFilter,row.ty)){if(elem.generics.length>0){return checkGenerics(row,elem,whereClause,new Map())}return true}return checkIfInList(row.generics,elem,whereClause)}function checkPath(contains,ty,maxEditDistance){if(contains.length===0){return 0}let ret_dist=maxEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;if(clength>length){return maxEditDistance+1}for(let i=0;ilength){break}let dist_total=0;let aborted=false;for(let x=0;xmaxEditDistance){aborted=true;break}dist_total+=dist}if(!aborted){ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}}return ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,deprecated:item.deprecated,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){const inBounds=dist<=maxEditDistance||index!==-1;if(dist===0||(!parsedQuery.literalSearch&&inBounds)){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let index=-1,path_dist=0;const fullId=row.id;const searchWord=searchWords[pos];const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause);if(in_args){addIntoResults(results_in_args,fullId,pos,-1,0,0,maxEditDistance)}const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause);if(returned){addIntoResults(results_returned,fullId,pos,-1,0,0,maxEditDistance)}if(!typePassesFilter(elem.typeFilter,row.ty)){return}const row_index=row.normalizedName.indexOf(elem.pathLast);const word_index=searchWord.indexOf(elem.pathLast);if(row_index===-1){index=word_index}else if(word_index===-1){index=row_index}else if(word_index1){path_dist=checkPath(elem.pathWithoutLast,row,maxEditDistance);if(path_dist>maxEditDistance){return}}if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(searchWord,elem.pathLast,maxEditDistance);if(index===-1&&dist+path_dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens)})){return}addIntoResults(results,row.id,pos,0,0,0,Number.MAX_VALUE)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;let queryLen=0;for(const elem of parsedQuery.elems){queryLen+=elem.name.length}for(const elem of parsedQuery.returned){queryLen+=elem.name.length}const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem){if(typeNameIdMap.has(elem.pathLast)){elem.id=typeNameIdMap.get(elem.pathLast)}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,id]of typeNameIdMap){const dist=editDistance(name,elem.pathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}}for(const elem of parsedQuery.elems){convertNameToId(elem)}for(const elem of parsedQuery.returned){convertNameToId(elem)}if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i0){for(i=0,nSearchWords=searchWords.length;i-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||editDistance(name,key,maxEditDistance)<=maxEditDistance)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";length+=1;const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
\ -${item.alias} - see \ -
`}resultName.insertAdjacentHTML("beforeend",`
${alias}\ -${item.displayPath}${name}\ -
`);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in 
"}let output=`

Results${crates}

`;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

Query parser error: "${error.join("")}".

`;output+="
"+makeTabHeader(0,"In Names",ret_others[1])+"
";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
"+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

"+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

`}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

"+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

`}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.map(type=>buildItemSearchType(type,lowercasePaths))}function buildItemSearchType(type,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}if(pathIndex<0){return{id:pathIndex,ty:TY_GENERIC,path:null,generics,}}if(pathIndex===0){return{id:null,ty:null,path:null,generics,}}const item=lowercasePaths[pathIndex-1];return{id:buildTypeMapIndex(item.name),ty:item.ty,path:item.path,generics,}}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}lowercasePaths.push({ty:ty,name:name.toLowerCase(),path:path});paths[i]={ty:ty,name:name,path:path}}lastPath="";len=itemTypes.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})() \ No newline at end of file diff --git a/ch9/static.files/search-dd67cee4cfa65049.js b/ch9/static.files/search-dd67cee4cfa65049.js new file mode 100644 index 000000000..ef8bf865a --- /dev/null +++ b/ch9/static.files/search-dd67cee4cfa65049.js @@ -0,0 +1,5 @@ +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let functionTypeFingerprint;let currentResults;let typeNameIdMap;const ALIASES=new Map();let typeNameIdOfArray;let typeNameIdOfSlice;let typeNameIdOfArrayOrSlice;let typeNameIdOfTuple;let typeNameIdOfUnit;let typeNameIdOfTupleOrUnit;function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return{name:"never",id:null,fullPath:["never"],pathWithoutLast:[],pathLast:"never",normalizedPathLast:"never",generics:[],bindings:new Map(),typeFilter:"primitive",bindingName,}}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){bindings.set(gen.bindingName.name,[gen,...gen.bindingName.generics]);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}else{throw["Unexpected ",c]}}parserState.pos+=1;end=parserState.pos}if(foundExclamation!==-1&&foundExclamation!==start&&isIdentCharacter(parserState.userQuery[foundExclamation-1])){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=foundExclamation}return end}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const isInBinding=parserState.isInBinding;if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else{parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push({name:name,id:null,fullPath:[name],pathWithoutLast:[],pathLast:name,normalizedPathLast:name,generics,bindings:new Map(),typeFilter:"primitive",bindingName:isInBinding,})}}else{const isStringElem=parserState.userQuery[start]==="\"";if(isStringElem){start+=1;getStringElem(query,parserState,isInGenerics);end=parserState.pos-1}else{end=getIdentEndPosition(parserState)}if(parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;let start=parserState.pos;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;start=parserState.pos;getNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;let start=parserState.pos;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}else if(query.elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=query.elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;foundStopChar=true;continue}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;start=parserState.pos;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}duplicates.add(obj.fullPath);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){if(results.size===0){return[]}const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=aaa.item.deprecated;b=bbb.item.deprecated;if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb){const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb);if(passesUnification){return true}}return false});if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,whereClause,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(queryElem.id===typeNameIdOfTupleOrUnit&&(fnType.id===typeNameIdOfTuple||fnType.id===typeNameIdOfUnit)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false});return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens){if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens)}return false}function checkIfInList(list,elem,whereClause,mgens){for(const entry of list){if(checkType(entry,elem,whereClause,mgens)){return true}}return false}function checkType(row,elem,whereClause,mgens){if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice&&elem.id!==typeNameIdOfTupleOrUnit){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens)}}return unifyFunctionTypes([row],[elem],whereClause,mgens)}function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,deprecated:item.deprecated,implDisambiguator:item.implDisambiguator,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens)})){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}))}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
\ +${item.alias} - see \ +
`}resultName.insertAdjacentHTML("beforeend",`
${alias}\ +${item.displayPath}${name}\ +
`);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
"+"Try on DuckDuckGo?

"+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
"}let output=`

Results${crates}

`;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

Query parser error: "${error.join("")}".

`;output+="
"+makeTabHeader(0,"In Names",ret_others[1])+"
";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
"+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
"}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
"+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

"+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

`}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

"+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

`}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));showResults(execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>buildItemSearchType(type,lowercasePaths)):EMPTY_GENERICS_ARRAY}const EMPTY_BINDINGS_MAP=new Map();const EMPTY_GENERICS_ARRAY=[];let TYPES_POOL=new Map();function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=EMPTY_GENERICS_ARRAY;bindings=EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,generics,bindings,}}const cr=TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}TYPES_POOL.set(result.id,result);return result}function buildFunctionSearchType(itemFunctionDecoder,lowercasePaths){const c=itemFunctionDecoder.string.charCodeAt(itemFunctionDecoder.offset);itemFunctionDecoder.offset+=1;const[zero,ua,la,ob,cb]=["0","@","`","{","}"].map(c=>c.charCodeAt(0));if(c===la){return null}if(c>=zero&&c>1];itemFunctionDecoder.offset+=1;return sign?-value:value}const functionSearchType=decodeList();const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i16){itemFunctionDecoder.backrefQueue.pop()}return ret}function buildFunctionTypeFingerprint(type,output,fps){let input=type.id;if(input===typeNameIdOfArray||input===typeNameIdOfSlice){input=typeNameIdOfArrayOrSlice}if(input===typeNameIdOfTuple||input===typeNameIdOfUnit){input=typeNameIdOfTupleOrUnit}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:EMPTY_GENERICS_ARRAY,bindings:EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}function buildIndex(rawSearchIndex){searchIndex=[];typeNameIdMap=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;typeNameIdOfArray=buildTypeMapIndex("array");typeNameIdOfSlice=buildTypeMapIndex("slice");typeNameIdOfTuple=buildTypeMapIndex("tuple");typeNameIdOfUnit=buildTypeMapIndex("unit");typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");typeNameIdOfTupleOrUnit=buildTypeMapIndex("()");for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const crateRow={crate:crate,ty:3,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),deprecated:null,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionDecoder={string:crateCorpus.f,offset:0,backrefQueue:[],};const deprecatedItems=new Set(crateCorpus.c);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}lowercasePaths.push({ty:ty,name:name.toLowerCase(),path:path});paths[i]={ty:ty,name:name,path:path}}lastPath="";len=itemTypes.length;for(let i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type,id:id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),deprecated:deprecatedItems.has(i),implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length}TYPES_POOL=new Map()}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/ch9/static.files/settings-4313503d2e1961c2.js b/ch9/static.files/settings-4313503d2e1961c2.js new file mode 100644 index 000000000..ab425fe49 --- /dev/null +++ b/ch9/static.files/settings-4313503d2e1961c2.js @@ -0,0 +1,17 @@ +"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break;case"hide-sidebar":if(value===true){addClass(document.documentElement,"hide-sidebar")}else{removeClass(document.documentElement,"hide-sidebar")}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +
+
${setting_name}
+
`;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ + `});output+=`\ +
+
`}else{const checked=setting["default"]===true?" checked":"";output+=`\ +
\ + \ +
`}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
${buildSettingsPageSections(settings)}
`;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/ch9/static.files/settings-74424d7eec62a23e.js b/ch9/static.files/settings-74424d7eec62a23e.js deleted file mode 100644 index 3014f75c5..000000000 --- a/ch9/static.files/settings-74424d7eec62a23e.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ -
-
${setting_name}
-
`;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ - `});output+=`\ -
-
`}else{const checked=setting["default"]===true?" checked":"";output+=`\ -
\ - \ -
`}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
${buildSettingsPageSections(settings)}
`;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display=""}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(elemIsInParent(event.target,settingsMenu)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/ch9/static.files/src-script-3280b574d94e47b4.js b/ch9/static.files/src-script-3280b574d94e47b4.js deleted file mode 100644 index 9ea88921e..000000000 --- a/ch9/static.files/src-script-3280b574d94e47b4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth"){addClass(document.documentElement,"src-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{removeClass(document.documentElement,"src-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="src-sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(srcIndex).forEach(key=>{srcIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(srcIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSrcLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSrcLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/ch9/static.files/src-script-e66d777a5a92e9b2.js b/ch9/static.files/src-script-e66d777a5a92e9b2.js new file mode 100644 index 000000000..d0aebb851 --- /dev/null +++ b/ch9/static.files/src-script-e66d777a5a92e9b2.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth{removeClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","true")};window.rustdocToggleSrcSidebar=()=>{if(document.documentElement.classList.contains("src-sidebar-expanded")){window.rustdocCloseSourceSidebar()}else{window.rustdocShowSourceSidebar()}};function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/ch9/static.files/storage-f2adc0d6ca4d09fb.js b/ch9/static.files/storage-f2adc0d6ca4d09fb.js new file mode 100644 index 000000000..17233608a --- /dev/null +++ b/ch9/static.files/storage-f2adc0d6ca4d09fb.js @@ -0,0 +1 @@ +"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+newThemeName+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px")}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px")}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}}) \ No newline at end of file diff --git a/ch9/static.files/storage-fec3eaa3851e447d.js b/ch9/static.files/storage-fec3eaa3851e447d.js deleted file mode 100644 index a687118f3..000000000 --- a/ch9/static.files/storage-fec3eaa3851e447d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func,reversed){if(arr&&arr.length>0){if(reversed){for(let i=arr.length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+newThemeName+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0)}}) \ No newline at end of file diff --git a/ch9/trait.impl/core/clone/trait.Clone.js b/ch9/trait.impl/core/clone/trait.Clone.js new file mode 100644 index 000000000..b57ce5c8e --- /dev/null +++ b/ch9/trait.impl/core/clone/trait.Clone.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Clone for PTEFlags"],["impl Clone for TaskStatus"],["impl Clone for PhysAddr"],["impl Clone for PhysPageNum"],["impl Clone for VirtPageNum"],["impl Clone for SignalFlags"],["impl Clone for IER"],["impl Clone for LSR"],["impl Clone for OpenFlags"],["impl Clone for MapType"],["impl Clone for VirtAddr"],["impl Clone for MCR"],["impl<T> Clone for SimpleRange<T>"],["impl Clone for PageTableEntry"],["impl Clone for RingBufferStatus"],["impl Clone for IntrTargetPriority"],["impl Clone for MapPermission"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/cmp/trait.Eq.js b/ch9/trait.impl/core/cmp/trait.Eq.js new file mode 100644 index 000000000..9745d3c3a --- /dev/null +++ b/ch9/trait.impl/core/cmp/trait.Eq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Eq for PhysPageNum"],["impl Eq for IER"],["impl Eq for LSR"],["impl Eq for OpenFlags"],["impl Eq for VirtPageNum"],["impl Eq for TimerCondVar"],["impl Eq for PTEFlags"],["impl Eq for MapPermission"],["impl Eq for VirtAddr"],["impl Eq for MCR"],["impl Eq for SignalFlags"],["impl Eq for PhysAddr"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/cmp/trait.Ord.js b/ch9/trait.impl/core/cmp/trait.Ord.js new file mode 100644 index 000000000..39f3b0263 --- /dev/null +++ b/ch9/trait.impl/core/cmp/trait.Ord.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Ord for OpenFlags"],["impl Ord for PhysAddr"],["impl Ord for LSR"],["impl Ord for VirtAddr"],["impl Ord for IER"],["impl Ord for SignalFlags"],["impl Ord for TimerCondVar"],["impl Ord for PhysPageNum"],["impl Ord for MCR"],["impl Ord for MapPermission"],["impl Ord for VirtPageNum"],["impl Ord for PTEFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/cmp/trait.PartialEq.js b/ch9/trait.impl/core/cmp/trait.PartialEq.js new file mode 100644 index 000000000..e1943029e --- /dev/null +++ b/ch9/trait.impl/core/cmp/trait.PartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl PartialEq for IER"],["impl PartialEq for PhysAddr"],["impl PartialEq for PTEFlags"],["impl PartialEq for MCR"],["impl PartialEq for PhysPageNum"],["impl PartialEq for TimerCondVar"],["impl PartialEq for TaskStatus"],["impl PartialEq for LSR"],["impl PartialEq for VirtAddr"],["impl PartialEq for OpenFlags"],["impl PartialEq for MapType"],["impl PartialEq for RingBufferStatus"],["impl PartialEq for VirtPageNum"],["impl PartialEq for MapPermission"],["impl PartialEq for SignalFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/cmp/trait.PartialOrd.js b/ch9/trait.impl/core/cmp/trait.PartialOrd.js new file mode 100644 index 000000000..73fae9714 --- /dev/null +++ b/ch9/trait.impl/core/cmp/trait.PartialOrd.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl PartialOrd for TimerCondVar"],["impl PartialOrd for OpenFlags"],["impl PartialOrd for PhysPageNum"],["impl PartialOrd for MapPermission"],["impl PartialOrd for VirtPageNum"],["impl PartialOrd for VirtAddr"],["impl PartialOrd for PhysAddr"],["impl PartialOrd for LSR"],["impl PartialOrd for IER"],["impl PartialOrd for PTEFlags"],["impl PartialOrd for MCR"],["impl PartialOrd for SignalFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/convert/trait.From.js b/ch9/trait.impl/core/convert/trait.From.js new file mode 100644 index 000000000..35126ee20 --- /dev/null +++ b/ch9/trait.impl/core/convert/trait.From.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl From<VirtAddr> for VirtPageNum"],["impl From<usize> for VirtPageNum"],["impl From<PhysAddr> for PhysPageNum"],["impl From<VirtAddr> for usize"],["impl From<VirtPageNum> for usize"],["impl From<VirtPageNum> for VirtAddr"],["impl From<usize> for VirtAddr"],["impl From<PhysPageNum> for PhysAddr"],["impl From<usize> for PhysPageNum"],["impl From<usize> for PhysAddr"],["impl From<PhysAddr> for usize"],["impl From<PhysPageNum> for usize"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/fmt/trait.Binary.js b/ch9/trait.impl/core/fmt/trait.Binary.js new file mode 100644 index 000000000..f8c88e825 --- /dev/null +++ b/ch9/trait.impl/core/fmt/trait.Binary.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Binary for MapPermission"],["impl Binary for LSR"],["impl Binary for OpenFlags"],["impl Binary for MCR"],["impl Binary for PTEFlags"],["impl Binary for IER"],["impl Binary for SignalFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/fmt/trait.Debug.js b/ch9/trait.impl/core/fmt/trait.Debug.js new file mode 100644 index 000000000..4d8d90e5a --- /dev/null +++ b/ch9/trait.impl/core/fmt/trait.Debug.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Debug for FrameTracker"],["impl Debug for LSR"],["impl Debug for VirtPageNum"],["impl Debug for PhysAddr"],["impl Debug for VirtAddr"],["impl Debug for TrapContext"],["impl Debug for MCR"],["impl Debug for MapType"],["impl Debug for PhysPageNum"],["impl Debug for PTEFlags"],["impl Debug for IER"],["impl Debug for SignalFlags"],["impl Debug for MapPermission"],["impl Debug for OpenFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/fmt/trait.LowerHex.js b/ch9/trait.impl/core/fmt/trait.LowerHex.js new file mode 100644 index 000000000..149f672dc --- /dev/null +++ b/ch9/trait.impl/core/fmt/trait.LowerHex.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl LowerHex for PTEFlags"],["impl LowerHex for MCR"],["impl LowerHex for SignalFlags"],["impl LowerHex for OpenFlags"],["impl LowerHex for IER"],["impl LowerHex for MapPermission"],["impl LowerHex for LSR"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/fmt/trait.Octal.js b/ch9/trait.impl/core/fmt/trait.Octal.js new file mode 100644 index 000000000..221388473 --- /dev/null +++ b/ch9/trait.impl/core/fmt/trait.Octal.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Octal for OpenFlags"],["impl Octal for PTEFlags"],["impl Octal for MapPermission"],["impl Octal for IER"],["impl Octal for LSR"],["impl Octal for SignalFlags"],["impl Octal for MCR"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/fmt/trait.UpperHex.js b/ch9/trait.impl/core/fmt/trait.UpperHex.js new file mode 100644 index 000000000..e35b66ff2 --- /dev/null +++ b/ch9/trait.impl/core/fmt/trait.UpperHex.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl UpperHex for PTEFlags"],["impl UpperHex for OpenFlags"],["impl UpperHex for SignalFlags"],["impl UpperHex for MCR"],["impl UpperHex for LSR"],["impl UpperHex for IER"],["impl UpperHex for MapPermission"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/fmt/trait.Write.js b/ch9/trait.impl/core/fmt/trait.Write.js similarity index 100% rename from ch9/implementors/core/fmt/trait.Write.js rename to ch9/trait.impl/core/fmt/trait.Write.js diff --git a/ch9/trait.impl/core/hash/trait.Hash.js b/ch9/trait.impl/core/hash/trait.Hash.js new file mode 100644 index 000000000..f3ad761d7 --- /dev/null +++ b/ch9/trait.impl/core/hash/trait.Hash.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Hash for MapPermission"],["impl Hash for MCR"],["impl Hash for SignalFlags"],["impl Hash for PTEFlags"],["impl Hash for OpenFlags"],["impl Hash for IER"],["impl Hash for LSR"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/iter/traits/collect/trait.Extend.js b/ch9/trait.impl/core/iter/traits/collect/trait.Extend.js new file mode 100644 index 000000000..03f92d9ba --- /dev/null +++ b/ch9/trait.impl/core/iter/traits/collect/trait.Extend.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Extend<MapPermission> for MapPermission"],["impl Extend<IER> for IER"],["impl Extend<MCR> for MCR"],["impl Extend<LSR> for LSR"],["impl Extend<SignalFlags> for SignalFlags"],["impl Extend<OpenFlags> for OpenFlags"],["impl Extend<PTEFlags> for PTEFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/iter/traits/collect/trait.FromIterator.js b/ch9/trait.impl/core/iter/traits/collect/trait.FromIterator.js new file mode 100644 index 000000000..d1c3ed70c --- /dev/null +++ b/ch9/trait.impl/core/iter/traits/collect/trait.FromIterator.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl FromIterator<LSR> for LSR"],["impl FromIterator<MapPermission> for MapPermission"],["impl FromIterator<MCR> for MCR"],["impl FromIterator<OpenFlags> for OpenFlags"],["impl FromIterator<PTEFlags> for PTEFlags"],["impl FromIterator<SignalFlags> for SignalFlags"],["impl FromIterator<IER> for IER"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/iter/traits/collect/trait.IntoIterator.js b/ch9/trait.impl/core/iter/traits/collect/trait.IntoIterator.js new file mode 100644 index 000000000..6a96ea0ec --- /dev/null +++ b/ch9/trait.impl/core/iter/traits/collect/trait.IntoIterator.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl<T> IntoIterator for SimpleRange<T>"],["impl IntoIterator for UserBuffer"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/ch9/trait.impl/core/iter/traits/iterator/trait.Iterator.js new file mode 100644 index 000000000..9f546e1f0 --- /dev/null +++ b/ch9/trait.impl/core/iter/traits/iterator/trait.Iterator.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Iterator for UserBufferIterator"],["impl<T> Iterator for SimpleRangeIterator<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/marker/trait.Copy.js b/ch9/trait.impl/core/marker/trait.Copy.js new file mode 100644 index 000000000..f835f97d6 --- /dev/null +++ b/ch9/trait.impl/core/marker/trait.Copy.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Copy for MapType"],["impl Copy for PTEFlags"],["impl Copy for IER"],["impl Copy for PageTableEntry"],["impl Copy for PhysAddr"],["impl Copy for MapPermission"],["impl Copy for PhysPageNum"],["impl Copy for RingBufferStatus"],["impl Copy for VirtAddr"],["impl<T> Copy for SimpleRange<T>"],["impl Copy for MCR"],["impl Copy for VirtPageNum"],["impl Copy for LSR"],["impl Copy for IntrTargetPriority"],["impl Copy for TaskStatus"],["impl Copy for OpenFlags"],["impl Copy for SignalFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/marker/trait.Freeze.js b/ch9/trait.impl/core/marker/trait.Freeze.js new file mode 100644 index 000000000..c6f6751c9 --- /dev/null +++ b/ch9/trait.impl/core/marker/trait.Freeze.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Freeze for Stdout",1,["os::console::Stdout"]],["impl !Freeze for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Freeze for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Freeze for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Freeze for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Freeze for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Freeze for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Freeze for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Freeze for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Freeze for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Freeze for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Freeze for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> !Freeze for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Freeze for UART",1,["os::drivers::chardev::UART"]],["impl Freeze for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl !Freeze for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Freeze for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl !Freeze for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Freeze for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Freeze for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Freeze for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl !Freeze for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Freeze for PLIC",1,["os::drivers::plic::PLIC"]],["impl Freeze for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl !Freeze for OSInode",1,["os::fs::inode::OSInode"]],["impl Freeze for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Freeze for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Freeze for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Freeze for Pipe",1,["os::fs::pipe::Pipe"]],["impl Freeze for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Freeze for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Freeze for Stdin",1,["os::fs::stdio::Stdin"]],["impl Freeze for Stdout",1,["os::fs::stdio::Stdout"]],["impl Freeze for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Freeze for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Freeze for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Freeze for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Freeze for SimpleRange<T>
where\n T: Freeze,
",1,["os::mm::address::SimpleRange"]],["impl<T> Freeze for SimpleRangeIterator<T>
where\n T: Freeze,
",1,["os::mm::address::SimpleRangeIterator"]],["impl Freeze for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Freeze for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Freeze for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Freeze for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Freeze for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Freeze for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Freeze for MapType",1,["os::mm::memory_set::MapType"]],["impl Freeze for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Freeze for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Freeze for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Freeze for PageTable",1,["os::mm::page_table::PageTable"]],["impl Freeze for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Freeze for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Freeze for Port",1,["os::net::port_table::Port"]],["impl Freeze for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Freeze for PortFd",1,["os::net::port_table::PortFd"]],["impl Freeze for Socket",1,["os::net::socket::Socket"]],["impl Freeze for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Freeze for TCP",1,["os::net::tcp::TCP"]],["impl Freeze for UDP",1,["os::net::udp::UDP"]],["impl !Freeze for NetStack",1,["os::net::NetStack"]],["impl Freeze for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl !Freeze for Condvar",1,["os::sync::condvar::Condvar"]],["impl Freeze for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl !Freeze for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl !Freeze for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Freeze for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl !Freeze for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Freeze for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> !Freeze for UPSafeCellRaw<T>",1,["os::sync::up::UPSafeCellRaw"]],["impl Freeze for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Freeze for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> !Freeze for UPIntrFreeCell<T>",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> Freeze for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Freeze for TaskContext",1,["os::task::context::TaskContext"]],["impl Freeze for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Freeze for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Freeze for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Freeze for PidHandle",1,["os::task::id::PidHandle"]],["impl Freeze for KernelStack",1,["os::task::id::KernelStack"]],["impl Freeze for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Freeze for TaskManager",1,["os::task::manager::TaskManager"]],["impl Freeze for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Freeze for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl !Freeze for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Freeze for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Freeze for Processor",1,["os::task::processor::Processor"]],["impl Freeze for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Freeze for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl !Freeze for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Freeze for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Freeze for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Freeze for INITPROC",1,["os::task::INITPROC"]],["impl Freeze for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Freeze for TIMERS",1,["os::timer::TIMERS"]],["impl Freeze for TrapContext",1,["os::trap::context::TrapContext"]],["impl Freeze for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Send.js b/ch9/trait.impl/core/marker/trait.Send.js similarity index 51% rename from ch9/implementors/core/marker/trait.Send.js rename to ch9/trait.impl/core/marker/trait.Send.js index b28600091..d1f4035d3 100644 --- a/ch9/implementors/core/marker/trait.Send.js +++ b/ch9/trait.impl/core/marker/trait.Send.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"os":[["impl Send for Stdout",1,["os::console::Stdout"]],["impl Send for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Send for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Send for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Send for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Send for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Send for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Send for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Send for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Send for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Send for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Send for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> Send for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Send for UART",1,["os::drivers::chardev::UART"]],["impl Send for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl Send for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Send for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl Send for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Send for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Send for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Send for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl Send for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Send for PLIC",1,["os::drivers::plic::PLIC"]],["impl Send for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl Send for OSInode",1,["os::fs::inode::OSInode"]],["impl Send for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Send for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Send for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Send for Pipe",1,["os::fs::pipe::Pipe"]],["impl Send for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Send for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Send for Stdin",1,["os::fs::stdio::Stdin"]],["impl Send for Stdout",1,["os::fs::stdio::Stdout"]],["impl Send for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Send for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Send for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Send for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Send for SimpleRange<T>where\n T: Send,",1,["os::mm::address::SimpleRange"]],["impl<T> Send for SimpleRangeIterator<T>where\n T: Send,",1,["os::mm::address::SimpleRangeIterator"]],["impl Send for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Send for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Send for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Send for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Send for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Send for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Send for MapType",1,["os::mm::memory_set::MapType"]],["impl Send for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Send for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Send for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Send for PageTable",1,["os::mm::page_table::PageTable"]],["impl Send for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Send for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Send for Port",1,["os::net::port_table::Port"]],["impl Send for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Send for PortFd",1,["os::net::port_table::PortFd"]],["impl Send for Socket",1,["os::net::socket::Socket"]],["impl Send for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Send for TCP",1,["os::net::tcp::TCP"]],["impl Send for UDP",1,["os::net::udp::UDP"]],["impl Send for NetStack",1,["os::net::NetStack"]],["impl Send for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl Send for Condvar",1,["os::sync::condvar::Condvar"]],["impl Send for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl Send for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl Send for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Send for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl Send for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Send for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> Send for UPSafeCellRaw<T>where\n T: Send,",1,["os::sync::up::UPSafeCellRaw"]],["impl Send for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Send for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> Send for UPIntrFreeCell<T>where\n T: Send,",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> !Send for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Send for TaskContext",1,["os::task::context::TaskContext"]],["impl Send for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Send for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Send for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Send for PidHandle",1,["os::task::id::PidHandle"]],["impl Send for KernelStack",1,["os::task::id::KernelStack"]],["impl Send for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Send for TaskManager",1,["os::task::manager::TaskManager"]],["impl Send for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Send for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl Send for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Send for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Send for Processor",1,["os::task::processor::Processor"]],["impl Send for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Send for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl Send for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Send for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Send for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Send for INITPROC",1,["os::task::INITPROC"]],["impl Send for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Send for TIMERS",1,["os::timer::TIMERS"]],["impl Send for TrapContext",1,["os::trap::context::TrapContext"]],["impl Send for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] +"os":[["impl Send for Stdout",1,["os::console::Stdout"]],["impl Send for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Send for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Send for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Send for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Send for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Send for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Send for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Send for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Send for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Send for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Send for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> Send for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Send for UART",1,["os::drivers::chardev::UART"]],["impl Send for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl Send for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Send for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl Send for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Send for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Send for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Send for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl Send for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Send for PLIC",1,["os::drivers::plic::PLIC"]],["impl Send for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl Send for OSInode",1,["os::fs::inode::OSInode"]],["impl Send for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Send for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Send for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Send for Pipe",1,["os::fs::pipe::Pipe"]],["impl Send for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Send for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Send for Stdin",1,["os::fs::stdio::Stdin"]],["impl Send for Stdout",1,["os::fs::stdio::Stdout"]],["impl Send for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Send for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Send for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Send for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Send for SimpleRange<T>
where\n T: Send,
",1,["os::mm::address::SimpleRange"]],["impl<T> Send for SimpleRangeIterator<T>
where\n T: Send,
",1,["os::mm::address::SimpleRangeIterator"]],["impl Send for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Send for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Send for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Send for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Send for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Send for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Send for MapType",1,["os::mm::memory_set::MapType"]],["impl Send for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Send for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Send for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Send for PageTable",1,["os::mm::page_table::PageTable"]],["impl Send for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Send for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Send for Port",1,["os::net::port_table::Port"]],["impl Send for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Send for PortFd",1,["os::net::port_table::PortFd"]],["impl Send for Socket",1,["os::net::socket::Socket"]],["impl Send for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Send for TCP",1,["os::net::tcp::TCP"]],["impl Send for UDP",1,["os::net::udp::UDP"]],["impl Send for NetStack",1,["os::net::NetStack"]],["impl Send for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl Send for Condvar",1,["os::sync::condvar::Condvar"]],["impl Send for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl Send for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl Send for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Send for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl Send for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Send for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> Send for UPSafeCellRaw<T>
where\n T: Send,
",1,["os::sync::up::UPSafeCellRaw"]],["impl Send for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Send for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> Send for UPIntrFreeCell<T>
where\n T: Send,
",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> !Send for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Send for TaskContext",1,["os::task::context::TaskContext"]],["impl Send for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Send for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Send for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Send for PidHandle",1,["os::task::id::PidHandle"]],["impl Send for KernelStack",1,["os::task::id::KernelStack"]],["impl Send for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Send for TaskManager",1,["os::task::manager::TaskManager"]],["impl Send for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Send for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl Send for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Send for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Send for Processor",1,["os::task::processor::Processor"]],["impl Send for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Send for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl Send for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Send for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Send for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Send for INITPROC",1,["os::task::INITPROC"]],["impl Send for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Send for TIMERS",1,["os::timer::TIMERS"]],["impl Send for TrapContext",1,["os::trap::context::TrapContext"]],["impl Send for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/marker/trait.StructuralEq.js b/ch9/trait.impl/core/marker/trait.StructuralEq.js new file mode 100644 index 000000000..513038bdd --- /dev/null +++ b/ch9/trait.impl/core/marker/trait.StructuralEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl StructuralEq for VirtPageNum"],["impl StructuralEq for PTEFlags"],["impl StructuralEq for IER"],["impl StructuralEq for MapPermission"],["impl StructuralEq for MCR"],["impl StructuralEq for LSR"],["impl StructuralEq for PhysPageNum"],["impl StructuralEq for VirtAddr"],["impl StructuralEq for OpenFlags"],["impl StructuralEq for SignalFlags"],["impl StructuralEq for PhysAddr"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/marker/trait.StructuralPartialEq.js b/ch9/trait.impl/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 000000000..06ab06bde --- /dev/null +++ b/ch9/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl StructuralPartialEq for PTEFlags"],["impl StructuralPartialEq for SignalFlags"],["impl StructuralPartialEq for LSR"],["impl StructuralPartialEq for VirtAddr"],["impl StructuralPartialEq for MapPermission"],["impl StructuralPartialEq for PhysAddr"],["impl StructuralPartialEq for MapType"],["impl StructuralPartialEq for PhysPageNum"],["impl StructuralPartialEq for VirtPageNum"],["impl StructuralPartialEq for RingBufferStatus"],["impl StructuralPartialEq for IER"],["impl StructuralPartialEq for MCR"],["impl StructuralPartialEq for OpenFlags"],["impl StructuralPartialEq for TaskStatus"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/marker/trait.Sync.js b/ch9/trait.impl/core/marker/trait.Sync.js new file mode 100644 index 000000000..0290ddefb --- /dev/null +++ b/ch9/trait.impl/core/marker/trait.Sync.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Sync for Stdout",1,["os::console::Stdout"]],["impl Sync for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Sync for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Sync for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Sync for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Sync for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Sync for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Sync for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Sync for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Sync for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Sync for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Sync for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> Sync for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Sync for UART",1,["os::drivers::chardev::UART"]],["impl Sync for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl Sync for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Sync for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl Sync for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Sync for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Sync for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Sync for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl Sync for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Sync for PLIC",1,["os::drivers::plic::PLIC"]],["impl Sync for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl Sync for OSInode",1,["os::fs::inode::OSInode"]],["impl Sync for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Sync for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Sync for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Sync for Pipe",1,["os::fs::pipe::Pipe"]],["impl Sync for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Sync for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Sync for Stdin",1,["os::fs::stdio::Stdin"]],["impl Sync for Stdout",1,["os::fs::stdio::Stdout"]],["impl Sync for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Sync for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Sync for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Sync for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Sync for SimpleRange<T>
where\n T: Sync,
",1,["os::mm::address::SimpleRange"]],["impl<T> Sync for SimpleRangeIterator<T>
where\n T: Sync,
",1,["os::mm::address::SimpleRangeIterator"]],["impl Sync for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Sync for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Sync for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Sync for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Sync for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Sync for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Sync for MapType",1,["os::mm::memory_set::MapType"]],["impl Sync for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Sync for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Sync for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Sync for PageTable",1,["os::mm::page_table::PageTable"]],["impl Sync for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Sync for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Sync for Port",1,["os::net::port_table::Port"]],["impl Sync for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Sync for PortFd",1,["os::net::port_table::PortFd"]],["impl Sync for Socket",1,["os::net::socket::Socket"]],["impl Sync for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Sync for TCP",1,["os::net::tcp::TCP"]],["impl Sync for UDP",1,["os::net::udp::UDP"]],["impl Sync for NetStack",1,["os::net::NetStack"]],["impl Sync for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl Sync for Condvar",1,["os::sync::condvar::Condvar"]],["impl Sync for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl Sync for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl Sync for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Sync for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl Sync for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Sync for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl Sync for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Sync for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<'a, T> !Sync for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Sync for TaskContext",1,["os::task::context::TaskContext"]],["impl Sync for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Sync for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Sync for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Sync for PidHandle",1,["os::task::id::PidHandle"]],["impl Sync for KernelStack",1,["os::task::id::KernelStack"]],["impl Sync for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Sync for TaskManager",1,["os::task::manager::TaskManager"]],["impl Sync for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Sync for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl Sync for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Sync for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Sync for Processor",1,["os::task::processor::Processor"]],["impl Sync for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Sync for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl Sync for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Sync for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Sync for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Sync for INITPROC",1,["os::task::INITPROC"]],["impl Sync for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Sync for TIMERS",1,["os::timer::TIMERS"]],["impl Sync for TrapContext",1,["os::trap::context::TrapContext"]],["impl Sync for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]],["impl<T> Sync for UPSafeCellRaw<T>"],["impl<T> Sync for UPIntrFreeCell<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/marker/trait.Unpin.js b/ch9/trait.impl/core/marker/trait.Unpin.js similarity index 50% rename from ch9/implementors/core/marker/trait.Unpin.js rename to ch9/trait.impl/core/marker/trait.Unpin.js index 51ed51ead..2221c685c 100644 --- a/ch9/implementors/core/marker/trait.Unpin.js +++ b/ch9/trait.impl/core/marker/trait.Unpin.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"os":[["impl Unpin for Stdout",1,["os::console::Stdout"]],["impl Unpin for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Unpin for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Unpin for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Unpin for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Unpin for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Unpin for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Unpin for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Unpin for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Unpin for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Unpin for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Unpin for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> Unpin for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Unpin for UART",1,["os::drivers::chardev::UART"]],["impl Unpin for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl Unpin for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Unpin for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl Unpin for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Unpin for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Unpin for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Unpin for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl Unpin for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Unpin for PLIC",1,["os::drivers::plic::PLIC"]],["impl Unpin for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl Unpin for OSInode",1,["os::fs::inode::OSInode"]],["impl Unpin for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Unpin for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Unpin for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Unpin for Pipe",1,["os::fs::pipe::Pipe"]],["impl Unpin for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Unpin for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Unpin for Stdin",1,["os::fs::stdio::Stdin"]],["impl Unpin for Stdout",1,["os::fs::stdio::Stdout"]],["impl Unpin for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Unpin for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Unpin for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Unpin for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Unpin for SimpleRange<T>where\n T: Unpin,",1,["os::mm::address::SimpleRange"]],["impl<T> Unpin for SimpleRangeIterator<T>where\n T: Unpin,",1,["os::mm::address::SimpleRangeIterator"]],["impl Unpin for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Unpin for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Unpin for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Unpin for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Unpin for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Unpin for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Unpin for MapType",1,["os::mm::memory_set::MapType"]],["impl Unpin for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Unpin for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Unpin for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Unpin for PageTable",1,["os::mm::page_table::PageTable"]],["impl Unpin for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Unpin for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Unpin for Port",1,["os::net::port_table::Port"]],["impl Unpin for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Unpin for PortFd",1,["os::net::port_table::PortFd"]],["impl Unpin for Socket",1,["os::net::socket::Socket"]],["impl Unpin for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Unpin for TCP",1,["os::net::tcp::TCP"]],["impl Unpin for UDP",1,["os::net::udp::UDP"]],["impl Unpin for NetStack",1,["os::net::NetStack"]],["impl Unpin for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl Unpin for Condvar",1,["os::sync::condvar::Condvar"]],["impl Unpin for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl Unpin for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl Unpin for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Unpin for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl Unpin for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Unpin for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> Unpin for UPSafeCellRaw<T>where\n T: Unpin,",1,["os::sync::up::UPSafeCellRaw"]],["impl Unpin for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Unpin for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> Unpin for UPIntrFreeCell<T>where\n T: Unpin,",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> Unpin for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Unpin for TaskContext",1,["os::task::context::TaskContext"]],["impl Unpin for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Unpin for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Unpin for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Unpin for PidHandle",1,["os::task::id::PidHandle"]],["impl Unpin for KernelStack",1,["os::task::id::KernelStack"]],["impl Unpin for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Unpin for TaskManager",1,["os::task::manager::TaskManager"]],["impl Unpin for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Unpin for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl Unpin for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Unpin for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Unpin for Processor",1,["os::task::processor::Processor"]],["impl Unpin for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Unpin for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl Unpin for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Unpin for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Unpin for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Unpin for INITPROC",1,["os::task::INITPROC"]],["impl Unpin for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Unpin for TIMERS",1,["os::timer::TIMERS"]],["impl Unpin for TrapContext",1,["os::trap::context::TrapContext"]],["impl Unpin for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] +"os":[["impl Unpin for Stdout",1,["os::console::Stdout"]],["impl Unpin for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl Unpin for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl Unpin for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl Unpin for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl Unpin for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl Unpin for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl Unpin for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl Unpin for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl Unpin for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl Unpin for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl Unpin for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> Unpin for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl Unpin for UART",1,["os::drivers::chardev::UART"]],["impl Unpin for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl Unpin for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl Unpin for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl Unpin for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl Unpin for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl Unpin for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl Unpin for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl Unpin for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl Unpin for PLIC",1,["os::drivers::plic::PLIC"]],["impl Unpin for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl Unpin for OSInode",1,["os::fs::inode::OSInode"]],["impl Unpin for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl Unpin for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl Unpin for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl Unpin for Pipe",1,["os::fs::pipe::Pipe"]],["impl Unpin for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl Unpin for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl Unpin for Stdin",1,["os::fs::stdio::Stdin"]],["impl Unpin for Stdout",1,["os::fs::stdio::Stdout"]],["impl Unpin for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl Unpin for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl Unpin for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl Unpin for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> Unpin for SimpleRange<T>
where\n T: Unpin,
",1,["os::mm::address::SimpleRange"]],["impl<T> Unpin for SimpleRangeIterator<T>
where\n T: Unpin,
",1,["os::mm::address::SimpleRangeIterator"]],["impl Unpin for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl Unpin for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl Unpin for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl Unpin for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl Unpin for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl Unpin for MapArea",1,["os::mm::memory_set::MapArea"]],["impl Unpin for MapType",1,["os::mm::memory_set::MapType"]],["impl Unpin for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl Unpin for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl Unpin for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl Unpin for PageTable",1,["os::mm::page_table::PageTable"]],["impl Unpin for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl Unpin for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl Unpin for Port",1,["os::net::port_table::Port"]],["impl Unpin for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl Unpin for PortFd",1,["os::net::port_table::PortFd"]],["impl Unpin for Socket",1,["os::net::socket::Socket"]],["impl Unpin for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl Unpin for TCP",1,["os::net::tcp::TCP"]],["impl Unpin for UDP",1,["os::net::udp::UDP"]],["impl Unpin for NetStack",1,["os::net::NetStack"]],["impl Unpin for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl Unpin for Condvar",1,["os::sync::condvar::Condvar"]],["impl Unpin for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl Unpin for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl Unpin for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl Unpin for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl Unpin for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl Unpin for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> Unpin for UPSafeCellRaw<T>
where\n T: Unpin,
",1,["os::sync::up::UPSafeCellRaw"]],["impl Unpin for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl Unpin for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> Unpin for UPIntrFreeCell<T>
where\n T: Unpin,
",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> Unpin for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl Unpin for TaskContext",1,["os::task::context::TaskContext"]],["impl Unpin for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl Unpin for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl Unpin for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl Unpin for PidHandle",1,["os::task::id::PidHandle"]],["impl Unpin for KernelStack",1,["os::task::id::KernelStack"]],["impl Unpin for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl Unpin for TaskManager",1,["os::task::manager::TaskManager"]],["impl Unpin for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl Unpin for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl Unpin for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl Unpin for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl Unpin for Processor",1,["os::task::processor::Processor"]],["impl Unpin for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl Unpin for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl Unpin for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl Unpin for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl Unpin for TaskStatus",1,["os::task::task::TaskStatus"]],["impl Unpin for INITPROC",1,["os::task::INITPROC"]],["impl Unpin for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl Unpin for TIMERS",1,["os::timer::TIMERS"]],["impl Unpin for TrapContext",1,["os::trap::context::TrapContext"]],["impl Unpin for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/arith/trait.Sub.js b/ch9/trait.impl/core/ops/arith/trait.Sub.js new file mode 100644 index 000000000..9b03c422d --- /dev/null +++ b/ch9/trait.impl/core/ops/arith/trait.Sub.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Sub for SignalFlags"],["impl Sub for MapPermission"],["impl Sub for LSR"],["impl Sub for PTEFlags"],["impl Sub for OpenFlags"],["impl Sub for MCR"],["impl Sub for IER"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/arith/trait.SubAssign.js b/ch9/trait.impl/core/ops/arith/trait.SubAssign.js new file mode 100644 index 000000000..45b1a52b9 --- /dev/null +++ b/ch9/trait.impl/core/ops/arith/trait.SubAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl SubAssign for MCR"],["impl SubAssign for IER"],["impl SubAssign for OpenFlags"],["impl SubAssign for SignalFlags"],["impl SubAssign for PTEFlags"],["impl SubAssign for LSR"],["impl SubAssign for MapPermission"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/bit/trait.BitAnd.js b/ch9/trait.impl/core/ops/bit/trait.BitAnd.js new file mode 100644 index 000000000..f172c255a --- /dev/null +++ b/ch9/trait.impl/core/ops/bit/trait.BitAnd.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl BitAnd for MCR"],["impl BitAnd for MapPermission"],["impl BitAnd for LSR"],["impl BitAnd for OpenFlags"],["impl BitAnd for PTEFlags"],["impl BitAnd for SignalFlags"],["impl BitAnd for IER"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/bit/trait.BitAndAssign.js b/ch9/trait.impl/core/ops/bit/trait.BitAndAssign.js new file mode 100644 index 000000000..59c83eff2 --- /dev/null +++ b/ch9/trait.impl/core/ops/bit/trait.BitAndAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl BitAndAssign for SignalFlags"],["impl BitAndAssign for IER"],["impl BitAndAssign for LSR"],["impl BitAndAssign for MCR"],["impl BitAndAssign for OpenFlags"],["impl BitAndAssign for MapPermission"],["impl BitAndAssign for PTEFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/bit/trait.BitOr.js b/ch9/trait.impl/core/ops/bit/trait.BitOr.js new file mode 100644 index 000000000..f9741fb34 --- /dev/null +++ b/ch9/trait.impl/core/ops/bit/trait.BitOr.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl BitOr for SignalFlags"],["impl BitOr for PTEFlags"],["impl BitOr for OpenFlags"],["impl BitOr for LSR"],["impl BitOr for MapPermission"],["impl BitOr for IER"],["impl BitOr for MCR"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/bit/trait.BitOrAssign.js b/ch9/trait.impl/core/ops/bit/trait.BitOrAssign.js new file mode 100644 index 000000000..815184068 --- /dev/null +++ b/ch9/trait.impl/core/ops/bit/trait.BitOrAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl BitOrAssign for IER"],["impl BitOrAssign for LSR"],["impl BitOrAssign for MapPermission"],["impl BitOrAssign for MCR"],["impl BitOrAssign for OpenFlags"],["impl BitOrAssign for PTEFlags"],["impl BitOrAssign for SignalFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/bit/trait.BitXor.js b/ch9/trait.impl/core/ops/bit/trait.BitXor.js new file mode 100644 index 000000000..142a91e66 --- /dev/null +++ b/ch9/trait.impl/core/ops/bit/trait.BitXor.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl BitXor for MCR"],["impl BitXor for LSR"],["impl BitXor for PTEFlags"],["impl BitXor for SignalFlags"],["impl BitXor for MapPermission"],["impl BitXor for IER"],["impl BitXor for OpenFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/bit/trait.BitXorAssign.js b/ch9/trait.impl/core/ops/bit/trait.BitXorAssign.js new file mode 100644 index 000000000..845b88549 --- /dev/null +++ b/ch9/trait.impl/core/ops/bit/trait.BitXorAssign.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl BitXorAssign for MapPermission"],["impl BitXorAssign for LSR"],["impl BitXorAssign for PTEFlags"],["impl BitXorAssign for MCR"],["impl BitXorAssign for IER"],["impl BitXorAssign for SignalFlags"],["impl BitXorAssign for OpenFlags"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/bit/trait.Not.js b/ch9/trait.impl/core/ops/bit/trait.Not.js new file mode 100644 index 000000000..3d1ac0b06 --- /dev/null +++ b/ch9/trait.impl/core/ops/bit/trait.Not.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Not for MapPermission"],["impl Not for MCR"],["impl Not for LSR"],["impl Not for SignalFlags"],["impl Not for OpenFlags"],["impl Not for PTEFlags"],["impl Not for IER"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/ops/deref/trait.Deref.js b/ch9/trait.impl/core/ops/deref/trait.Deref.js new file mode 100644 index 000000000..829072caa --- /dev/null +++ b/ch9/trait.impl/core/ops/deref/trait.Deref.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Deref for KERNEL_SPACE"],["impl Deref for FRAME_ALLOCATOR"],["impl Deref for DEV_NON_BLOCKING_ACCESS"],["impl<'a, T> Deref for UPIntrRefMut<'a, T>"],["impl Deref for SOCKET_TABLE"],["impl Deref for TASK_MANAGER"],["impl Deref for MOUSE_DEVICE"],["impl Deref for KEYBOARD_DEVICE"],["impl Deref for INITPROC"],["impl Deref for PID2PCB"],["impl Deref for LISTEN_TABLE"],["impl Deref for QUEUE_FRAMES"],["impl Deref for BLOCK_DEVICE"],["impl Deref for UART"],["impl Deref for PROCESSOR"],["impl Deref for ROOT_INODE"],["impl Deref for GPU_DEVICE"],["impl Deref for KSTACK_ALLOCATOR"],["impl Deref for PID_ALLOCATOR"],["impl Deref for INTR_MASKING_INFO"],["impl Deref for NET_DEVICE"],["impl Deref for LOSE_NET_STACK"],["impl Deref for TIMERS"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/ops/deref/trait.DerefMut.js b/ch9/trait.impl/core/ops/deref/trait.DerefMut.js similarity index 100% rename from ch9/implementors/core/ops/deref/trait.DerefMut.js rename to ch9/trait.impl/core/ops/deref/trait.DerefMut.js diff --git a/ch9/trait.impl/core/ops/drop/trait.Drop.js b/ch9/trait.impl/core/ops/drop/trait.Drop.js new file mode 100644 index 000000000..ec56b709a --- /dev/null +++ b/ch9/trait.impl/core/ops/drop/trait.Drop.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl Drop for TaskUserRes"],["impl<'a, T> Drop for UPIntrRefMut<'a, T>"],["impl Drop for TCP"],["impl Drop for PidHandle"],["impl Drop for UDP"],["impl Drop for FrameTracker"],["impl Drop for PortFd"],["impl Drop for KernelStack"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/ch9/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js similarity index 52% rename from ch9/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js rename to ch9/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 6fa6f3063..dbeffa3d2 100644 --- a/ch9/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/ch9/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"os":[["impl RefUnwindSafe for Stdout",1,["os::console::Stdout"]],["impl !RefUnwindSafe for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl RefUnwindSafe for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl RefUnwindSafe for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl RefUnwindSafe for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl RefUnwindSafe for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl RefUnwindSafe for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl RefUnwindSafe for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl RefUnwindSafe for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl RefUnwindSafe for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl RefUnwindSafe for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl RefUnwindSafe for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> !RefUnwindSafe for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl RefUnwindSafe for UART",1,["os::drivers::chardev::UART"]],["impl RefUnwindSafe for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl !RefUnwindSafe for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl RefUnwindSafe for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl !RefUnwindSafe for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl RefUnwindSafe for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl RefUnwindSafe for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl RefUnwindSafe for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl !RefUnwindSafe for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl RefUnwindSafe for PLIC",1,["os::drivers::plic::PLIC"]],["impl RefUnwindSafe for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl !RefUnwindSafe for OSInode",1,["os::fs::inode::OSInode"]],["impl !RefUnwindSafe for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl RefUnwindSafe for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl RefUnwindSafe for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl !RefUnwindSafe for Pipe",1,["os::fs::pipe::Pipe"]],["impl RefUnwindSafe for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl !RefUnwindSafe for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl RefUnwindSafe for Stdin",1,["os::fs::stdio::Stdin"]],["impl RefUnwindSafe for Stdout",1,["os::fs::stdio::Stdout"]],["impl RefUnwindSafe for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl RefUnwindSafe for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl RefUnwindSafe for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl RefUnwindSafe for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> RefUnwindSafe for SimpleRange<T>where\n T: RefUnwindSafe,",1,["os::mm::address::SimpleRange"]],["impl<T> RefUnwindSafe for SimpleRangeIterator<T>where\n T: RefUnwindSafe,",1,["os::mm::address::SimpleRangeIterator"]],["impl RefUnwindSafe for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl RefUnwindSafe for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl RefUnwindSafe for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl RefUnwindSafe for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl RefUnwindSafe for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl RefUnwindSafe for MapArea",1,["os::mm::memory_set::MapArea"]],["impl RefUnwindSafe for MapType",1,["os::mm::memory_set::MapType"]],["impl RefUnwindSafe for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl RefUnwindSafe for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl RefUnwindSafe for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl RefUnwindSafe for PageTable",1,["os::mm::page_table::PageTable"]],["impl RefUnwindSafe for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl RefUnwindSafe for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl !RefUnwindSafe for Port",1,["os::net::port_table::Port"]],["impl RefUnwindSafe for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl RefUnwindSafe for PortFd",1,["os::net::port_table::PortFd"]],["impl RefUnwindSafe for Socket",1,["os::net::socket::Socket"]],["impl RefUnwindSafe for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl RefUnwindSafe for TCP",1,["os::net::tcp::TCP"]],["impl RefUnwindSafe for UDP",1,["os::net::udp::UDP"]],["impl !RefUnwindSafe for NetStack",1,["os::net::NetStack"]],["impl RefUnwindSafe for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl !RefUnwindSafe for Condvar",1,["os::sync::condvar::Condvar"]],["impl !RefUnwindSafe for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl !RefUnwindSafe for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl !RefUnwindSafe for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl !RefUnwindSafe for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl !RefUnwindSafe for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl !RefUnwindSafe for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> !RefUnwindSafe for UPSafeCellRaw<T>",1,["os::sync::up::UPSafeCellRaw"]],["impl RefUnwindSafe for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl RefUnwindSafe for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> !RefUnwindSafe for UPIntrFreeCell<T>",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> !RefUnwindSafe for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl RefUnwindSafe for TaskContext",1,["os::task::context::TaskContext"]],["impl RefUnwindSafe for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl RefUnwindSafe for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl RefUnwindSafe for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl RefUnwindSafe for PidHandle",1,["os::task::id::PidHandle"]],["impl RefUnwindSafe for KernelStack",1,["os::task::id::KernelStack"]],["impl !RefUnwindSafe for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl !RefUnwindSafe for TaskManager",1,["os::task::manager::TaskManager"]],["impl RefUnwindSafe for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl RefUnwindSafe for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl !RefUnwindSafe for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl !RefUnwindSafe for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl !RefUnwindSafe for Processor",1,["os::task::processor::Processor"]],["impl RefUnwindSafe for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl RefUnwindSafe for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl !RefUnwindSafe for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl !RefUnwindSafe for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl RefUnwindSafe for TaskStatus",1,["os::task::task::TaskStatus"]],["impl RefUnwindSafe for INITPROC",1,["os::task::INITPROC"]],["impl !RefUnwindSafe for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl RefUnwindSafe for TIMERS",1,["os::timer::TIMERS"]],["impl RefUnwindSafe for TrapContext",1,["os::trap::context::TrapContext"]],["impl RefUnwindSafe for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] +"os":[["impl RefUnwindSafe for Stdout",1,["os::console::Stdout"]],["impl !RefUnwindSafe for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl RefUnwindSafe for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl RefUnwindSafe for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl RefUnwindSafe for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl RefUnwindSafe for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl RefUnwindSafe for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl RefUnwindSafe for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl RefUnwindSafe for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl RefUnwindSafe for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl RefUnwindSafe for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl RefUnwindSafe for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> !RefUnwindSafe for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl RefUnwindSafe for UART",1,["os::drivers::chardev::UART"]],["impl RefUnwindSafe for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl !RefUnwindSafe for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl RefUnwindSafe for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl !RefUnwindSafe for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl RefUnwindSafe for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl RefUnwindSafe for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl RefUnwindSafe for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl !RefUnwindSafe for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl RefUnwindSafe for PLIC",1,["os::drivers::plic::PLIC"]],["impl RefUnwindSafe for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl !RefUnwindSafe for OSInode",1,["os::fs::inode::OSInode"]],["impl !RefUnwindSafe for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl RefUnwindSafe for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl RefUnwindSafe for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl !RefUnwindSafe for Pipe",1,["os::fs::pipe::Pipe"]],["impl RefUnwindSafe for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl !RefUnwindSafe for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl RefUnwindSafe for Stdin",1,["os::fs::stdio::Stdin"]],["impl RefUnwindSafe for Stdout",1,["os::fs::stdio::Stdout"]],["impl RefUnwindSafe for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl RefUnwindSafe for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl RefUnwindSafe for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl RefUnwindSafe for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> RefUnwindSafe for SimpleRange<T>
where\n T: RefUnwindSafe,
",1,["os::mm::address::SimpleRange"]],["impl<T> RefUnwindSafe for SimpleRangeIterator<T>
where\n T: RefUnwindSafe,
",1,["os::mm::address::SimpleRangeIterator"]],["impl RefUnwindSafe for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl RefUnwindSafe for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl RefUnwindSafe for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl RefUnwindSafe for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl RefUnwindSafe for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl RefUnwindSafe for MapArea",1,["os::mm::memory_set::MapArea"]],["impl RefUnwindSafe for MapType",1,["os::mm::memory_set::MapType"]],["impl RefUnwindSafe for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl RefUnwindSafe for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl RefUnwindSafe for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl RefUnwindSafe for PageTable",1,["os::mm::page_table::PageTable"]],["impl RefUnwindSafe for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl RefUnwindSafe for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl !RefUnwindSafe for Port",1,["os::net::port_table::Port"]],["impl RefUnwindSafe for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl RefUnwindSafe for PortFd",1,["os::net::port_table::PortFd"]],["impl RefUnwindSafe for Socket",1,["os::net::socket::Socket"]],["impl RefUnwindSafe for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl RefUnwindSafe for TCP",1,["os::net::tcp::TCP"]],["impl RefUnwindSafe for UDP",1,["os::net::udp::UDP"]],["impl !RefUnwindSafe for NetStack",1,["os::net::NetStack"]],["impl RefUnwindSafe for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl !RefUnwindSafe for Condvar",1,["os::sync::condvar::Condvar"]],["impl !RefUnwindSafe for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl !RefUnwindSafe for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl !RefUnwindSafe for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl !RefUnwindSafe for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl !RefUnwindSafe for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl !RefUnwindSafe for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> !RefUnwindSafe for UPSafeCellRaw<T>",1,["os::sync::up::UPSafeCellRaw"]],["impl RefUnwindSafe for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl RefUnwindSafe for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> !RefUnwindSafe for UPIntrFreeCell<T>",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> !RefUnwindSafe for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl RefUnwindSafe for TaskContext",1,["os::task::context::TaskContext"]],["impl RefUnwindSafe for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl RefUnwindSafe for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl RefUnwindSafe for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl RefUnwindSafe for PidHandle",1,["os::task::id::PidHandle"]],["impl RefUnwindSafe for KernelStack",1,["os::task::id::KernelStack"]],["impl !RefUnwindSafe for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl !RefUnwindSafe for TaskManager",1,["os::task::manager::TaskManager"]],["impl RefUnwindSafe for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl RefUnwindSafe for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl !RefUnwindSafe for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl !RefUnwindSafe for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl !RefUnwindSafe for Processor",1,["os::task::processor::Processor"]],["impl RefUnwindSafe for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl RefUnwindSafe for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl !RefUnwindSafe for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl !RefUnwindSafe for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl RefUnwindSafe for TaskStatus",1,["os::task::task::TaskStatus"]],["impl RefUnwindSafe for INITPROC",1,["os::task::INITPROC"]],["impl !RefUnwindSafe for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl RefUnwindSafe for TIMERS",1,["os::timer::TIMERS"]],["impl RefUnwindSafe for TrapContext",1,["os::trap::context::TrapContext"]],["impl RefUnwindSafe for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/ch9/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 000000000..c1d3bb6ac --- /dev/null +++ b/ch9/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl UnwindSafe for Stdout",1,["os::console::Stdout"]],["impl !UnwindSafe for VirtIOBlock",1,["os::drivers::block::virtio_blk::VirtIOBlock"]],["impl UnwindSafe for BLOCK_DEVICE",1,["os::drivers::block::BLOCK_DEVICE"]],["impl UnwindSafe for QUEUE_FRAMES",1,["os::drivers::bus::virtio::QUEUE_FRAMES"]],["impl UnwindSafe for VirtioHal",1,["os::drivers::bus::virtio::VirtioHal"]],["impl UnwindSafe for IER",1,["os::drivers::chardev::ns16550a::IER"]],["impl UnwindSafe for LSR",1,["os::drivers::chardev::ns16550a::LSR"]],["impl UnwindSafe for MCR",1,["os::drivers::chardev::ns16550a::MCR"]],["impl UnwindSafe for ReadWithoutDLAB",1,["os::drivers::chardev::ns16550a::ReadWithoutDLAB"]],["impl UnwindSafe for WriteWithoutDLAB",1,["os::drivers::chardev::ns16550a::WriteWithoutDLAB"]],["impl UnwindSafe for NS16550aRaw",1,["os::drivers::chardev::ns16550a::NS16550aRaw"]],["impl UnwindSafe for NS16550aInner",1,["os::drivers::chardev::ns16550a::NS16550aInner"]],["impl<const BASE_ADDR: usize> !UnwindSafe for NS16550a<BASE_ADDR>",1,["os::drivers::chardev::ns16550a::NS16550a"]],["impl UnwindSafe for UART",1,["os::drivers::chardev::UART"]],["impl UnwindSafe for GPU_DEVICE",1,["os::drivers::gpu::GPU_DEVICE"]],["impl !UnwindSafe for VirtIOGpuWrapper",1,["os::drivers::gpu::VirtIOGpuWrapper"]],["impl !UnwindSafe for VirtIOInputInner",1,["os::drivers::input::VirtIOInputInner"]],["impl !UnwindSafe for VirtIOInputWrapper",1,["os::drivers::input::VirtIOInputWrapper"]],["impl UnwindSafe for KEYBOARD_DEVICE",1,["os::drivers::input::KEYBOARD_DEVICE"]],["impl UnwindSafe for MOUSE_DEVICE",1,["os::drivers::input::MOUSE_DEVICE"]],["impl UnwindSafe for NET_DEVICE",1,["os::drivers::net::NET_DEVICE"]],["impl !UnwindSafe for VirtIONetWrapper",1,["os::drivers::net::VirtIONetWrapper"]],["impl UnwindSafe for PLIC",1,["os::drivers::plic::PLIC"]],["impl UnwindSafe for IntrTargetPriority",1,["os::drivers::plic::IntrTargetPriority"]],["impl !UnwindSafe for OSInode",1,["os::fs::inode::OSInode"]],["impl !UnwindSafe for OSInodeInner",1,["os::fs::inode::OSInodeInner"]],["impl UnwindSafe for ROOT_INODE",1,["os::fs::inode::ROOT_INODE"]],["impl UnwindSafe for OpenFlags",1,["os::fs::inode::OpenFlags"]],["impl !UnwindSafe for Pipe",1,["os::fs::pipe::Pipe"]],["impl UnwindSafe for RingBufferStatus",1,["os::fs::pipe::RingBufferStatus"]],["impl !UnwindSafe for PipeRingBuffer",1,["os::fs::pipe::PipeRingBuffer"]],["impl UnwindSafe for Stdin",1,["os::fs::stdio::Stdin"]],["impl UnwindSafe for Stdout",1,["os::fs::stdio::Stdout"]],["impl UnwindSafe for PhysAddr",1,["os::mm::address::PhysAddr"]],["impl UnwindSafe for VirtAddr",1,["os::mm::address::VirtAddr"]],["impl UnwindSafe for PhysPageNum",1,["os::mm::address::PhysPageNum"]],["impl UnwindSafe for VirtPageNum",1,["os::mm::address::VirtPageNum"]],["impl<T> UnwindSafe for SimpleRange<T>
where\n T: UnwindSafe,
",1,["os::mm::address::SimpleRange"]],["impl<T> UnwindSafe for SimpleRangeIterator<T>
where\n T: UnwindSafe,
",1,["os::mm::address::SimpleRangeIterator"]],["impl UnwindSafe for FrameTracker",1,["os::mm::frame_allocator::FrameTracker"]],["impl UnwindSafe for StackFrameAllocator",1,["os::mm::frame_allocator::StackFrameAllocator"]],["impl UnwindSafe for FRAME_ALLOCATOR",1,["os::mm::frame_allocator::FRAME_ALLOCATOR"]],["impl UnwindSafe for KERNEL_SPACE",1,["os::mm::memory_set::KERNEL_SPACE"]],["impl UnwindSafe for MemorySet",1,["os::mm::memory_set::MemorySet"]],["impl UnwindSafe for MapArea",1,["os::mm::memory_set::MapArea"]],["impl UnwindSafe for MapType",1,["os::mm::memory_set::MapType"]],["impl UnwindSafe for MapPermission",1,["os::mm::memory_set::MapPermission"]],["impl UnwindSafe for PTEFlags",1,["os::mm::page_table::PTEFlags"]],["impl UnwindSafe for PageTableEntry",1,["os::mm::page_table::PageTableEntry"]],["impl UnwindSafe for PageTable",1,["os::mm::page_table::PageTable"]],["impl !UnwindSafe for UserBuffer",1,["os::mm::page_table::UserBuffer"]],["impl !UnwindSafe for UserBufferIterator",1,["os::mm::page_table::UserBufferIterator"]],["impl !UnwindSafe for Port",1,["os::net::port_table::Port"]],["impl UnwindSafe for LISTEN_TABLE",1,["os::net::port_table::LISTEN_TABLE"]],["impl UnwindSafe for PortFd",1,["os::net::port_table::PortFd"]],["impl UnwindSafe for Socket",1,["os::net::socket::Socket"]],["impl UnwindSafe for SOCKET_TABLE",1,["os::net::socket::SOCKET_TABLE"]],["impl UnwindSafe for TCP",1,["os::net::tcp::TCP"]],["impl UnwindSafe for UDP",1,["os::net::udp::UDP"]],["impl UnwindSafe for NetStack",1,["os::net::NetStack"]],["impl UnwindSafe for LOSE_NET_STACK",1,["os::net::LOSE_NET_STACK"]],["impl !UnwindSafe for Condvar",1,["os::sync::condvar::Condvar"]],["impl !UnwindSafe for CondvarInner",1,["os::sync::condvar::CondvarInner"]],["impl UnwindSafe for MutexSpin",1,["os::sync::mutex::MutexSpin"]],["impl !UnwindSafe for MutexBlocking",1,["os::sync::mutex::MutexBlocking"]],["impl !UnwindSafe for MutexBlockingInner",1,["os::sync::mutex::MutexBlockingInner"]],["impl !UnwindSafe for Semaphore",1,["os::sync::semaphore::Semaphore"]],["impl !UnwindSafe for SemaphoreInner",1,["os::sync::semaphore::SemaphoreInner"]],["impl<T> UnwindSafe for UPSafeCellRaw<T>
where\n T: UnwindSafe,
",1,["os::sync::up::UPSafeCellRaw"]],["impl UnwindSafe for IntrMaskingInfo",1,["os::sync::up::IntrMaskingInfo"]],["impl UnwindSafe for INTR_MASKING_INFO",1,["os::sync::up::INTR_MASKING_INFO"]],["impl<T> UnwindSafe for UPIntrFreeCell<T>
where\n T: UnwindSafe,
",1,["os::sync::up::UPIntrFreeCell"]],["impl<'a, T> !UnwindSafe for UPIntrRefMut<'a, T>",1,["os::sync::up::UPIntrRefMut"]],["impl UnwindSafe for TaskContext",1,["os::task::context::TaskContext"]],["impl UnwindSafe for RecycleAllocator",1,["os::task::id::RecycleAllocator"]],["impl UnwindSafe for PID_ALLOCATOR",1,["os::task::id::PID_ALLOCATOR"]],["impl UnwindSafe for KSTACK_ALLOCATOR",1,["os::task::id::KSTACK_ALLOCATOR"]],["impl UnwindSafe for PidHandle",1,["os::task::id::PidHandle"]],["impl UnwindSafe for KernelStack",1,["os::task::id::KernelStack"]],["impl !UnwindSafe for TaskUserRes",1,["os::task::id::TaskUserRes"]],["impl !UnwindSafe for TaskManager",1,["os::task::manager::TaskManager"]],["impl UnwindSafe for TASK_MANAGER",1,["os::task::manager::TASK_MANAGER"]],["impl UnwindSafe for PID2PCB",1,["os::task::manager::PID2PCB"]],["impl !UnwindSafe for ProcessControlBlock",1,["os::task::process::ProcessControlBlock"]],["impl !UnwindSafe for ProcessControlBlockInner",1,["os::task::process::ProcessControlBlockInner"]],["impl !UnwindSafe for Processor",1,["os::task::processor::Processor"]],["impl UnwindSafe for PROCESSOR",1,["os::task::processor::PROCESSOR"]],["impl UnwindSafe for SignalFlags",1,["os::task::signal::SignalFlags"]],["impl !UnwindSafe for TaskControlBlock",1,["os::task::task::TaskControlBlock"]],["impl !UnwindSafe for TaskControlBlockInner",1,["os::task::task::TaskControlBlockInner"]],["impl UnwindSafe for TaskStatus",1,["os::task::task::TaskStatus"]],["impl UnwindSafe for INITPROC",1,["os::task::INITPROC"]],["impl !UnwindSafe for TimerCondVar",1,["os::timer::TimerCondVar"]],["impl UnwindSafe for TIMERS",1,["os::timer::TIMERS"]],["impl UnwindSafe for TrapContext",1,["os::trap::context::TrapContext"]],["impl UnwindSafe for DEV_NON_BLOCKING_ACCESS",1,["os::DEV_NON_BLOCKING_ACCESS"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/easy_fs/block_dev/trait.BlockDevice.js b/ch9/trait.impl/easy_fs/block_dev/trait.BlockDevice.js similarity index 100% rename from ch9/implementors/easy_fs/block_dev/trait.BlockDevice.js rename to ch9/trait.impl/easy_fs/block_dev/trait.BlockDevice.js diff --git a/ch9/trait.impl/lazy_static/trait.LazyStatic.js b/ch9/trait.impl/lazy_static/trait.LazyStatic.js new file mode 100644 index 000000000..b70ac7b21 --- /dev/null +++ b/ch9/trait.impl/lazy_static/trait.LazyStatic.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"os":[["impl LazyStatic for PID_ALLOCATOR"],["impl LazyStatic for FRAME_ALLOCATOR"],["impl LazyStatic for TASK_MANAGER"],["impl LazyStatic for ROOT_INODE"],["impl LazyStatic for INITPROC"],["impl LazyStatic for UART"],["impl LazyStatic for TIMERS"],["impl LazyStatic for KEYBOARD_DEVICE"],["impl LazyStatic for KERNEL_SPACE"],["impl LazyStatic for PID2PCB"],["impl LazyStatic for SOCKET_TABLE"],["impl LazyStatic for BLOCK_DEVICE"],["impl LazyStatic for LISTEN_TABLE"],["impl LazyStatic for GPU_DEVICE"],["impl LazyStatic for LOSE_NET_STACK"],["impl LazyStatic for MOUSE_DEVICE"],["impl LazyStatic for DEV_NON_BLOCKING_ACCESS"],["impl LazyStatic for NET_DEVICE"],["impl LazyStatic for QUEUE_FRAMES"],["impl LazyStatic for KSTACK_ALLOCATOR"],["impl LazyStatic for INTR_MASKING_INFO"],["impl LazyStatic for PROCESSOR"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/ch9/implementors/os/drivers/chardev/trait.CharDevice.js b/ch9/trait.impl/os/drivers/chardev/trait.CharDevice.js similarity index 100% rename from ch9/implementors/os/drivers/chardev/trait.CharDevice.js rename to ch9/trait.impl/os/drivers/chardev/trait.CharDevice.js diff --git a/ch9/implementors/os/drivers/gpu/trait.GpuDevice.js b/ch9/trait.impl/os/drivers/gpu/trait.GpuDevice.js similarity index 100% rename from ch9/implementors/os/drivers/gpu/trait.GpuDevice.js rename to ch9/trait.impl/os/drivers/gpu/trait.GpuDevice.js diff --git a/ch9/implementors/os/drivers/input/trait.InputDevice.js b/ch9/trait.impl/os/drivers/input/trait.InputDevice.js similarity index 100% rename from ch9/implementors/os/drivers/input/trait.InputDevice.js rename to ch9/trait.impl/os/drivers/input/trait.InputDevice.js diff --git a/ch9/implementors/os/drivers/net/trait.NetDevice.js b/ch9/trait.impl/os/drivers/net/trait.NetDevice.js similarity index 100% rename from ch9/implementors/os/drivers/net/trait.NetDevice.js rename to ch9/trait.impl/os/drivers/net/trait.NetDevice.js diff --git a/ch9/implementors/os/fs/trait.File.js b/ch9/trait.impl/os/fs/trait.File.js similarity index 100% rename from ch9/implementors/os/fs/trait.File.js rename to ch9/trait.impl/os/fs/trait.File.js diff --git a/ch9/implementors/os/mm/address/trait.StepByOne.js b/ch9/trait.impl/os/mm/address/trait.StepByOne.js similarity index 100% rename from ch9/implementors/os/mm/address/trait.StepByOne.js rename to ch9/trait.impl/os/mm/address/trait.StepByOne.js diff --git a/ch9/implementors/os/mm/frame_allocator/trait.FrameAllocator.js b/ch9/trait.impl/os/mm/frame_allocator/trait.FrameAllocator.js similarity index 100% rename from ch9/implementors/os/mm/frame_allocator/trait.FrameAllocator.js rename to ch9/trait.impl/os/mm/frame_allocator/trait.FrameAllocator.js diff --git a/ch9/implementors/os/sync/mutex/trait.Mutex.js b/ch9/trait.impl/os/sync/mutex/trait.Mutex.js similarity index 100% rename from ch9/implementors/os/sync/mutex/trait.Mutex.js rename to ch9/trait.impl/os/sync/mutex/trait.Mutex.js diff --git a/ch9/implementors/virtio_drivers/hal/trait.Hal.js b/ch9/trait.impl/virtio_drivers/hal/trait.Hal.js similarity index 100% rename from ch9/implementors/virtio_drivers/hal/trait.Hal.js rename to ch9/trait.impl/virtio_drivers/hal/trait.Hal.js diff --git a/ch9/type.impl/os/drivers/block/virtio_blk/struct.VirtIOBlock.js b/ch9/type.impl/os/drivers/block/virtio_blk/struct.VirtIOBlock.js new file mode 100644 index 000000000..62c8d8e94 --- /dev/null +++ b/ch9/type.impl/os/drivers/block/virtio_blk/struct.VirtIOBlock.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"os":[["
source§

impl VirtIOBlock

source

pub fn new() -> Self

",0,"os::board::BlockDeviceImpl"],["
source§

impl BlockDevice for VirtIOBlock

source§

fn read_block(&self, block_id: usize, buf: &mut [u8])

source§

fn write_block(&self, block_id: usize, buf: &[u8])

source§

fn handle_irq(&self)

","BlockDevice","os::board::BlockDeviceImpl"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/ch9/type.impl/os/drivers/chardev/ns16550a/struct.NS16550a.js b/ch9/type.impl/os/drivers/chardev/ns16550a/struct.NS16550a.js new file mode 100644 index 000000000..e8a646817 --- /dev/null +++ b/ch9/type.impl/os/drivers/chardev/ns16550a/struct.NS16550a.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"os":[["
source§

impl<const BASE_ADDR: usize> NS16550a<BASE_ADDR>

source

pub fn new() -> Self

source

pub fn read_buffer_is_empty(&self) -> bool

",0,"os::board::CharDeviceImpl"],["
source§

impl<const BASE_ADDR: usize> CharDevice for NS16550a<BASE_ADDR>

source§

fn init(&self)

source§

fn read(&self) -> u8

source§

fn write(&self, ch: u8)

source§

fn handle_irq(&self)

","CharDevice","os::board::CharDeviceImpl"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/ch9/type.impl/os/mm/address/struct.SimpleRange.js b/ch9/type.impl/os/mm/address/struct.SimpleRange.js new file mode 100644 index 000000000..b272a2d11 --- /dev/null +++ b/ch9/type.impl/os/mm/address/struct.SimpleRange.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"os":[["
source§

impl<T> SimpleRange<T>

source

pub fn new(start: T, end: T) -> Self

source

pub fn get_start(&self) -> T

source

pub fn get_end(&self) -> T

",0,"os::mm::address::VPNRange"],["
source§

impl<T> IntoIterator for SimpleRange<T>

§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = SimpleRangeIterator<T>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
","IntoIterator","os::mm::address::VPNRange"],["
source§

impl<T> Copy for SimpleRange<T>

","Copy","os::mm::address::VPNRange"],["
source§

impl<T> Clone for SimpleRange<T>

source§

fn clone(&self) -> SimpleRange<T>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
","Clone","os::mm::address::VPNRange"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/ch9/type.impl/os/mm/frame_allocator/struct.StackFrameAllocator.js b/ch9/type.impl/os/mm/frame_allocator/struct.StackFrameAllocator.js new file mode 100644 index 000000000..db4fe08e6 --- /dev/null +++ b/ch9/type.impl/os/mm/frame_allocator/struct.StackFrameAllocator.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"os":[["
source§

impl StackFrameAllocator

source

pub fn init(&mut self, l: PhysPageNum, r: PhysPageNum)

",0,"os::mm::frame_allocator::FrameAllocatorImpl"],["
source§

impl FrameAllocator for StackFrameAllocator

source§

fn new() -> Self

source§

fn alloc(&mut self) -> Option<PhysPageNum>

source§

fn alloc_more(&mut self, pages: usize) -> Option<Vec<PhysPageNum>>

source§

fn dealloc(&mut self, ppn: PhysPageNum)

","FrameAllocator","os::mm::frame_allocator::FrameAllocatorImpl"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file