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