検索

phrase: max: clip:
target: order:
Results of 1 - 10 of about 20 for ptr (0.021 sec.)
Final Code 12558
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... ure(alloc, heap_api)] extern crate alloc; use std::ptr::{Unique, self}; use std::mem; use std::ops::{Dere ... ::PhantomData; use alloc::heap; struct RawVec<T> { ptr: Unique<T>, cap: usize, } impl<T> RawVec<T> { fn n ... "unallocated" and "zero-sized allocation" RawVec { ptr: Unique::new(heap::EMPTY as *mut T), cap: cap } } ... ); let align = mem::align_of::<T>(); let (new_cap, ptr) = if self.cap == 0 { let ptr = heap::allocate(ele ...
https://man.plustar.jp/rust/nomicon/vec-final.html - [similar]
RawVec 11912
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... 定したので、今がロジックを圧縮する丁度良い時です。 (ptr, cap) のペアを取り除き、これにアロケート、伸長そし ... て解放のロジックを 与えます。 struct RawVec<T> { ptr: Unique<T>, cap: usize, } impl<T> RawVec<T> { fn n ... "TODO: implement ZST support"); unsafe { RawVec { ptr: Unique::new(heap::EMPTY as *mut T), cap: 0 } } } ... let elem_size = mem::size_of::<T>(); let (new_cap, ptr) = if self.cap == 0 { let ptr = heap::allocate(ele ...
https://man.plustar.jp/rust/nomicon/vec-raw.html - [similar]
サイズが 0 の型を扱う 10485
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... に、状態を考える必要がありません。 この考えは実際に ptr::read や ptr::write に拡張されます。つまり、これら ... の // 2 つの意味を兼ねることになります。 RawVec { ptr: Unique::new(heap::EMPTY as *mut T), cap: cap } } ... ); let align = mem::align_of::<T>(); let (new_cap, ptr) = if self.cap == 0 { let ptr = heap::allocate(ele ... m_size, align); (1, ptr) } else { let new_cap = 2 * self.cap; let ptr = he ...
https://man.plustar.jp/rust/nomicon/vec-zsts.html - [similar]
挿入と削除 10281
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... 1 ずつずらす必要があります。 これを行なうために、 ptr::copy を使う必要があります。 C の memmove の、 Rus ... { self.grow(); } unsafe { if index < self.len { // ptr::copy(src, dest, len): "src から dest まで len 個の ... 要素をコピー" ptr::copy(self.ptr.offset(index as isize), self.ptr.of ... fset(index as isize + 1), self.len - index); } ptr::write(self.ptr.offset(index as isize), elem); sel ...
https://man.plustar.jp/rust/nomicon/vec-insert-remove.html - [similar]
デストラクタ 10111
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... c, heap_api, unique)] extern crate alloc; use std::ptr::{drop_in_place, Unique}; use std::mem; use alloc: ... :heap; struct Box<T>{ ptr: Unique<T> } impl<T> Drop for Box<T> { fn drop(&mu ... t self) { unsafe { drop_in_place(*self.ptr); heap::deallocate((*self.ptr) as *mut u8, mem::si ... :<T>()); } } } fn main() {} そしてこれは、 Rust が ptr フィールドをドロップする際、単に、実際の Drop 実装 ...
https://man.plustar.jp/rust/nomicon/destructors.html - [similar]
IntoIter 8683
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... きいです。その代わりに、バッファを全く変化させずに、 ptr::read を使って両端から値をコピーするようにします。 ... ロップされてしまうため、 Vec を分配出来ません。 let ptr = self.ptr; let cap = self.cap; let len = self.len ... します。 mem::forget(self); unsafe { IntoIter { buf: ptr, cap: cap, start: *ptr, end: if cap == 0 { // この ... ることが出来ません。アロケートされていないからです! *ptr } else { ptr.offset(len as isize) } } } } } 前方へ ...
https://man.plustar.jp/rust/nomicon/vec-into-iter.html - [similar]
リーク 8598
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... 化された Rc の実装を確認しましょう。 struct Rc<T> { ptr: *mut RcBox<T>, } struct RcBox<T> { data: T, ref_c ... cate がこのように動作したらよいと思いませんか? let ptr = heap::allocate::<RcBox<T>>(); ptr::write(ptr, Rc ... Box { data: data, ref_count: 1, }); Rc { ptr: ptr } } } fn clone(&self) -> Self { unsafe { (*se ... lf.ptr).ref_count += 1; } Rc { ptr: self.ptr } } } impl<T ...
https://man.plustar.jp/rust/nomicon/leaking.html - [similar]
レイアウト 8547
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... 設計で良いということになります。 pub struct Vec<T> { ptr: *mut T, cap: usize, len: usize, } fn main() {} そ ... std::ops::Deref; use std::mem; struct Unique<T> { ptr: *const T, // 変性のために *const です _marker: Ph ... nc for Unique<T> {} impl<T> Unique<T> { pub fn new(ptr: *mut T) -> Self { Unique { ptr: ptr, _marker: Pha ... ランスミュートします。 unsafe { mem::transmute(&self.ptr) } } } fn main() {} 残念ながら、値が非 0 であると述 ...
https://man.plustar.jp/rust/nomicon/vec-layout.html - [similar]
チェックされないメモリ 8513
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... リへのポインタを返すからです。 これに対処するには、 ptr モジュールを使用しなければなりません。 特にこのモジ ... います: write 、 copy 、 copy_nonoverlapping です。 ptr::write(ptr, val) は val を受け取り、 ptr が指し示す ... アドレスに受け取った値を 移します。 ptr::copy(src, dest, count) は、 T 型の count が占有す ... - 引数の順序が逆転していることに注意してください!) ptr::copy_nonoverlapping(src, dest, count) は copy と同 ...
https://man.plustar.jp/rust/nomicon/unchecked-uninit.html - [similar]
アロケーティング 8377
はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ ... のです。ですからもしアロケート出来ないだけではなく、 ptr にヌルポインタを代入出来ないとしたら、 Vec::new で ... る必要があります。 // 推論してもらいましょう。 Vec { ptr: Unique::new(heap::EMPTY as *mut _), len: 0, cap: ... 、特別な状況に対してガードする必要もあります。 特に ptr::offset は、沢山の問題を引き起こします。なぜならこ ... は符号なし整数を指定しますが、 GEP (そして結果として ptr::offset も) では符号付き整数を受け取ります。 これは ...
https://man.plustar.jp/rust/nomicon/vec-alloc.html - [similar]
PREV 1 2 NEXT