検索
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]