検索
Results of 11 - 20 of about 22 for self (0.031 sec.)
- デストラクタ 8737
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
タで、以下のメソッドを提供しています。 fn drop(&mut self); このメソッドは、型が行なっていたことをなんとか終...
間を、型に 与えます。 drop が実行された後、 Rust は self の全てのフィールドのドロップを再帰的に実行しようと...
ーブルな方法は、 Rust 1.0 の時点で存在しません &mut self を受け取ることは、再帰ドロップを防ぐことが出来たと...
しても、例えば self から フィールドをムーブすることが妨げられることに注...
- https://man.plustar.jp/rust/nomicon/destructors.html - [similar]
- プッシュとポップ 8181
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
値によるオフセットを使うべきです。 pub fn push(&mut self, elem: T) { if self.len == self.cap { self.grow();...
} unsafe { ptr::write(self.ptr.offset(self.len as isize), elem); } // 絶対成功...
します。 OOM はこの前に起こるからです。 self.len += 1; } 簡単です! では pop はどうでしょうか? こ...
n によるオフセットを使うべきです。 pub fn pop(&mut self) -> Option<T> { if self.len == 0 { None } else { s...
- https://man.plustar.jp/rust/nomicon/vec-push-pop.html - [similar]
- ライフタイムシステムの限界 7390
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
う。 struct Foo; impl Foo { fn mutate_and_share(&mut self) -> &Self { &*self } fn share(&self) {} } fn main(...
ct Foo; impl Foo { fn mutate_and_share<'a>(&'a mut self) -> &'a Self { &'a *self } fn share<'a>(&'a self)...
ーワード: share , Foo , 借用 , mutate , mut , 限界 , self , システム , loan , ライフタイム...
- https://man.plustar.jp/rust/nomicon/lifetime-mismatch.html - [similar]
- Unsafe と連携する 7272
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
世界を仮定します。 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...
cate(&mut self) { } } fn main() {} このコードはとてもシンプルなの...
- https://man.plustar.jp/rust/nomicon/working-with-unsafe.html - [similar]
- 高階トレイト境界 7238
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
sure<F> where F: Fn(&(u8, u16)) -> &u8, { fn call(&self) -> &u8 { (self.func)(&self.data) } } fn do_it(dat...
Fn(&'??? (u8, u16)) -> &'??? u8, { fn call<'a>(&'a self) -> &'a u8 { (self.func)(&self.data) } } fn do_it<...
のです。さらに、ライフタイムは固定されていません。 &self に どんな ライフタイムが割り当てられても、 call は...
文が良いされています。 関連キーワード: 境界 , data , self , call , func , Closure , ライフタイム , where , H...
- https://man.plustar.jp/rust/nomicon/hrtb.html - [similar]
- デアロケーティング 7171
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
は気にしません (今回はコードが取り除かれています) 。 self.cap == 0 である場合、 heap::deallocate を呼んではい...
いからです。 impl<T> Drop for Vec<T> { fn drop(&mut self) { if self.cap != 0 { while let Some(_) = self.pop...
= mem::size_of::<T>(); let num_bytes = elem_size * self.cap; unsafe { heap::deallocate(*self.ptr as *mut _...
ワード: デアロケーティング , ライフタイム , メモリ , self , Drop , let , pop , 実装 , cap , コード...
- https://man.plustar.jp/rust/nomicon/vec-dealloc.html - [similar]
- 参照外し 7137
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
T> Deref for Vec<T> { type Target = [T]; fn deref(&self) -> &[T] { unsafe { ::std::slice::from_raw_parts(*...
self.ptr, self.len) } } } では DerefMut も実装しましょう。 use st...
t; impl<T> DerefMut for Vec<T> { fn deref_mut(&mut self) -> &mut [T] { unsafe { ::std::slice::from_raw_par...
ts_mut(*self.ptr, self.len) } } } これで、 len 、 first 、 last...
- https://man.plustar.jp/rust/nomicon/vec-deref.html - [similar]
- ライフタイムの省略 7104
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
ョンに複数のライフタイムがあって、そのうちの一つが &self または &mut self の場合、 省略された出力ライフタイ...
ム全てに self のライフタイムが割り当てられます。 それ以外の場合は...
&str, t: &str) -> &str; // エラー fn get_mut(&mut self) -> &mut T; // 省略した場合 fn get_mut<'a>(&'a mut...
self) -> &'a mut T; // 展開した場合 fn args<T: ToCStr>(...
- https://man.plustar.jp/rust/nomicon/lifetime-elision.html - [similar]
- リーク 6548
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
count: usize, } impl<T> Rc<T> { fn new(data: T) -> Self { unsafe { // もし heap::allocate がこのように動作...
a, ref_count: 1, }); Rc { ptr: ptr } } } fn clone(&self) -> Self { unsafe { (*self.ptr).ref_count += 1; }...
Rc { ptr: self.ptr } } } impl<T> Drop for Rc<T> { fn drop(&mut se...
lf) { unsafe { (*self.ptr).ref_count -= 1; if (*self.ptr).ref_count == 0...
- https://man.plustar.jp/rust/nomicon/leaking.html - [similar]
- アロケーティング 6413
- はじめに 1. 安全と危険のご紹介 1.1. 安全と危険の相互作用 1.2. Unsafe と連携する 2. データレイアウ
...
e alloc::heap::EMPTY; impl<T> Vec<T> { fn new() -> Self { // まだ ZST を扱う準備が出来ていません assert!(m...
際にメモリをアロケートしてみましょう。 fn grow(&mut self) { // これは本当に繊細なので、全部アンセーフにしま...
ize = mem::size_of::<T>(); let (new_cap, ptr) = if self.cap == 0 { let ptr = heap::allocate(elem_size, ali...
gn); (1, ptr) } else { // 不変条件ですので、 `self.cap < isize::MAX` と見なすことが出来ます。 // です...
- https://man.plustar.jp/rust/nomicon/vec-alloc.html - [similar]