検索

phrase: max: clip:
target: order:
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]
PREV 1 2 3 NEXT