FatErasedPtr
まだ誰も着手していません。
評価
調査の方向性
まず既存の ErasablePtr と ErasedPtr の API を確認し、次に提案されている FatErasedPtr の実装とその faterasedptr テストを、crate の現在のポインターユーティリティと比較します。実験がプロジェクトに適合するかを確認し、PR を提案する前に、適切な drop と実証されたサイズの挙動に関する受け入れ基準を定義します。
索引モデルが issue の本文から書いたものです。
説明
I had just fun: Type erased pointers that Drop properly:
pub struct FatErasedPtr {
ptr: ErasedPtr,
dropfn: fn(ErasedPtr),
}
impl<P: ErasablePtr + 'static> From<P> for FatErasedPtr {
#[inline(always)]
fn from(this: P) -> Self {
fn dropfn<P: ErasablePtr> (this: ErasedPtr) {
unsafe { <P as ErasablePtr>::unerase(this) };
}
FatErasedPtr {
ptr: P::erase(this),
dropfn: dropfn::<P>,
}
}
}
impl Drop for FatErasedPtr {
fn drop(&mut self) {
(self.dropfn)(self.ptr)
}
}
#[test]
fn faterasedptr() {
use alloc::rc::Rc;
let rc: Rc<i32> = Rc::new(123);
let fat_erased: FatErasedPtr = FatErasedPtr::from(rc);
assert_eq!(core::mem::size_of_val(&fat_erased), core::mem::size_of::<usize>()*2);
}
Was just a curious experiment here. I can complete that and send a PR if this is interesting.
- 主要言語
- Rust
- スター
- 137
- フォーク
- 15
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
CAD97/pointer-utils のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
CAD97/pointer-utils#88 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
CAD97/pointer-utils#87 · リアクション 3 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
CAD97/pointer-utils#85 · コメント 3 件 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
CAD97/pointer-utils#75 · コメント 3 件 ·
-
documentation good first issue
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
CAD97/pointer-utils#69 · コメント 7 件 · リアクション 1 件 ·
CAD97/pointer-utils の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
TheLarkInn/aipm#2413 ·
-
documentation
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
alexgorbatchev/simple-ptt#15 ·
-
tooling
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
todo:ticket
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
taikoxyz/taiko-mono#22168 · コメント 1 件 ·