検索
Results of 1 - 10 of about 20 for ptr (0.039 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]