検索

phrase: max: clip:
target: order:
Results of 1 - 10 of about 22 for self (0.017 sec.)
Final Code 12205
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... p_api)] extern crate alloc; use std::ptr::{Unique, self}; use std::mem; use std::ops::{Deref, DerefMut}; u ... <T>, cap: usize, } impl<T> RawVec<T> { fn new() -> Self { unsafe { // !0 is usize::MAX. This branch should ... eap::EMPTY as *mut T), cap: cap } } } fn grow(&mut self) { unsafe { let elem_size = mem::size_of::<T>(); / ... gn = mem::align_of::<T>(); let (new_cap, ptr) = if self.cap == 0 { let ptr = heap::allocate(elem_size, ali ...
https://man.plustar.jp/rust/nomicon/vec-final.html - [similar]
借用の分割 10370
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... セーフなコードを必要とします。 fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]) { let len = s ... elf.len(); let ptr = self.as_mut_ptr(); assert!(mid <= len); unsafe { (from_ ... main() { trait Iterator { type Item; fn next(&mut self) -> Option<Self::Item>; } } 上記の定義によれば、 S ... elf::Item は self と何のつながりも持ち ません 。 これは、 next を続け ...
https://man.plustar.jp/rust/nomicon/borrow-splitting.html - [similar]
RawVec 10370
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... <T>, cap: usize, } impl<T> RawVec<T> { fn new() -> Self { assert!(mem::size_of::<T>() != 0, "TODO: impleme ... : 0 } } } // Vec の時と変更ありません fn grow(&mut self) { unsafe { let align = mem::align_of::<T>(); let ... ize = mem::size_of::<T>(); let (new_cap, ptr) = if self.cap == 0 { let ptr = heap::allocate(elem_size, ali ... gn); (1, ptr) } else { let new_cap = 2 * self.cap; let ptr = heap::reallocate(*self.ptr as *mut ...
https://man.plustar.jp/rust/nomicon/vec-raw.html - [similar]
Drain 10016
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... tor for Drain<'a, T> { type Item = T; fn next(&mut self) -> Option<T> { if self.start == self.end { None - ... すので問題ありません。 unsafe fn new(slice: &[T]) -> Self { RawValIter { start: slice.as_ptr(), end: if slic ... ator for IntoIter<T> { type Item = T; fn next(&mut self) -> Option<T> { self.iter.next() } fn size_hint(&s ... elf) -> (usize, Option<usize>) { self.iter.size_hint() } } impl<T> DoubleEndedIterator f ...
https://man.plustar.jp/rust/nomicon/vec-drain.html - [similar]
サイズが 0 の型を扱う 9949
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... くことを意味します。 impl<T> RawVec<T> { fn new() -> Self { unsafe { // !0 は usize::MAX です。この分岐はコン ... eap::EMPTY as *mut T), cap: cap } } } fn grow(&mut self) { unsafe { let elem_size = mem::size_of::<T>(); / ... gn = mem::align_of::<T>(); let (new_cap, ptr) = if self.cap == 0 { let ptr = heap::allocate(elem_size, ali ... gn); (1, ptr) } else { let new_cap = 2 * self.cap; let ptr = heap::reallocate(*self.ptr as *mut ...
https://man.plustar.jp/rust/nomicon/vec-zsts.html - [similar]
IntoIter 9881
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... が初期化のコードです。 impl<T> Vec<T> { fn into_iter(self) -> IntoIter<T> { // Vec がドロップされてしまうため ... 、 Vec を分配出来ません。 let ptr = self.ptr; let cap = self.cap; let len = self.len; // Ve ... しまうので、ドロップしないようにします。 mem::forget(self); unsafe { IntoIter { buf: ptr, cap: cap, start: * ... ator for IntoIter<T> { type Item = T; fn next(&mut self) -> Option<T> { if self.start == self.end { None } ...
https://man.plustar.jp/rust/nomicon/vec-into-iter.html - [similar]
挿入と削除 9814
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... [i+1 .. len+1] にシフトします。 pub fn insert(&mut self, index: usize, elem: T) { // 注意: 全要素の後に挿入 ... 等です。 // 境界外インデックスです assert!(index <= self.len, "index out of bounds"); if self.cap == self.l ... en { self.grow(); } unsafe { if index < self.len { // ptr::c ... src から dest まで len 個の要素をコピー" ptr::copy(self.ptr.offset(index as isize), self.ptr.offset(index ...
https://man.plustar.jp/rust/nomicon/vec-insert-remove.html - [similar]
print.html 9713
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... d::cmp::Ordering; unsafe trait UnsafeOrd { fn cmp(&self, other: &Self) -> Ordering; } } この場合、 UnsafeO ... 世界を仮定します。 impl<T> Vec<T> { pub fn push(&mut self, elem: T) { if self.len == self.cap { // この例では ... 重要ではありません。 self.reallocate(); } unsafe { ptr::write(self.ptr.offse ... t(self.len as isize), elem); self.len += 1; } } fn reallo ...
https://man.plustar.jp/rust/nomicon/print.html - [similar]
例外安全性 8871
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... 実装です。 impl<T: Clone> Vec<T> { fn push_all(&mut self, to_push: &[T]) { self.reserve(to_push.len()); uns ... rve をしたので、オーバーフローするはずがありません self.set_len(self.len() + to_push.len()); for (i, x) in ... to_push.iter().enumerate() { self.ptr().offset(i as isize).write(x.clone()); } } } } ... すが、嫌になるようなパフォーマンス です。すなわち、 self の要素が無駄に交換され続けます。それならむしろ、以 ...
https://man.plustar.jp/rust/nomicon/exception-safety.html - [similar]
Drop Check 8804
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... 8); impl<'a> Drop for Inspector<'a> { fn drop(&mut self) { println!("I was only {} days from retirement!", ... self.0); } } fn main() { let (inspector, days); days = ... r); impl<'a> Drop for Inspector<'a> { fn drop(&mut self) { println!("Inspector(_, {}) knows when *not* to ... inspect.", self.1); } } fn main() { let (inspector, days); days = ...
https://man.plustar.jp/rust/nomicon/dropck.html - [similar]
PREV 1 2 3 NEXT