Arc <T>をTと比較するにはどうすればよいですか?

セフリード

Arc基になるデータのように扱いたいと思っています。特に、オーバーロードされた演算子を使用しようとしています。次のコードはエラーを出しますが、私の試みでした。

use std::cmp::Ordering;
use std::option::Option;
use std::sync::Arc;

pub struct SomeNum {
    num: u32,
}

impl std::cmp::PartialEq<u32> for SomeNum {
    fn eq(&self, other: &u32) -> bool {
        return *other == self.num;
    }
}

impl std::cmp::PartialOrd<u32> for SomeNum {
    fn partial_cmp(&self, other: &u32) -> Option<Ordering> {
        if (self.num < *other) {
            return Option::Some(Ordering::Less);
        }
        if (self.num > *other) {
            return Option::Some(Ordering::Greater);
        }
        return Option::Some(Ordering::Equal);
    }
}

fn main() {
    let test_num = SomeNum { num: 16 };
    let oveloadedNum = test_num > 10; // works

    let arc_num = Arc::new(test_num);
    let overloadedArc = arc_num > 10; // fails

    let arc_num_clone = Arc::clone(&arc_num);
    let overloadedArcClone = arc_num_clone > 10; // fails
}

遊び場

使っimpl Arc<SomeNum>てみましたが、木枠以外には使えません。それを超えて、私はRust(2日目)に非常に慣れていないので、明らかな何かが欠けているように感じます。おそらく私は拡張してArc、それのために何かを実装することができますか?

アーチベルト

あなたは、Arcとして使用することができSomeNumますが、それに関数を呼び出すたび、それが逆参照されているため。ドキュメントをArc見ると、逆参照のArc<T>結果がになっていることがわかりますT

あなたは実装されているPartialOrdPartialEqだけ構造体のためにSomeNum、これ>だけで動作しますSomeNumArcそれらを比較する前に、を逆参照する必要があります。

fn main() {
    let test_num = SomeNum { num: 16 };
    let oveloadedNum = test_num > 10; // works

    let arc_num = Arc::new(test_num);
    let overloadedArc = *arc_num > 10;

    let arc_num_clone = Arc::clone(&arc_num);
    let overloadedArcClone = *arc_num_clone > 10;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Arc <Mutex <T >>からTの所有権を取得するにはどうすればよいですか?

分類Dev

Arc <RwLock <T >>によって保護されている基になるデータへの参照を使用するにはどうすればよいですか?

分類Dev

SerdeでArc <T>をシリアル化または逆シリアル化するにはどうすればよいですか?

分類Dev

Arc <Mutex <MyStruct <T >>>を使用してスレッド間でジェネリック構造体を共有するにはどうすればよいですか?

分類Dev

Vec <T>からArc <[T]>を作成することは可能ですか?

分類Dev

Arc <Mutex <T >>を共有する方法は?

分類Dev

TがIEquatableを実装しているときに2List <T>を比較するにはどうすればよいですか?

分類Dev

Arc <RwLock <T >>をArc <RwLock <TraitObject>にキャストします

分類Dev

ArcとWeakで循環参照を作成するにはどうすればよいですか?

分類Dev

&HashSet <&T>をIntoIterator <Item =&T>として使用するにはどうすればよいですか?

分類Dev

SilverlightでList <T>を作成するにはどうすればよいですか?

分類Dev

IEnumerable <T>を実装するにはどうすればよいですか

分類Dev

C ++、time_tを生成するにはどうすればよいですか?

分類Dev

`Vec <Vec <T >>`を行ごとに効率的に反復するにはどうすればよいですか?

分類Dev

このJsonarrayからTとZを削除するにはどうすればよいですか?

分類Dev

ARCを使用してSwiftに手動で保持するにはどうすればよいですか?

分類Dev

Type [T]でT = TypeVar( 'T'、bound = ...)を正しく使用するにはどうすればよいですか?

分類Dev

TObjectをTObjectList <T>としてキャストするにはどうすればよいですか?

分類Dev

teeとlogger-t "some tag:"を使用するにはどうすればよいですか?

分類Dev

特定のファイルにARCを追加するにはどうすればよいですか?

分類Dev

ʻArc <[u8;を初期化するにはどうすればよいですか。65536]> `効率的に?

分類Dev

Arc.UserDialogs ActionSheetにアイコンを追加/設定するにはどうすればよいですか?

分類Dev

IOSのARCの中央にテキストを追加するにはどうすればよいですか?

分類Dev

ARCモードで参照カウントを確認するにはどうすればよいですか?

分類Dev

ARCコードで非const型を使用するにはどうすればよいですか?

分類Dev

ʻIEnumerable <T1> `がʻIEnumerable <T2>`と共変するかどうかを確認するにはどうすればよいですか?

分類Dev

2つのIEnumerable <T>を新しいIEnumerable <T>に連結するにはどうすればよいですか?

分類Dev

Tが集計タイプかどうかを確認するにはどうすればよいですか?

分類Dev

Tが集計タイプかどうかを確認するにはどうすればよいですか?

Related 関連記事

  1. 1

    Arc <Mutex <T >>からTの所有権を取得するにはどうすればよいですか?

  2. 2

    Arc <RwLock <T >>によって保護されている基になるデータへの参照を使用するにはどうすればよいですか?

  3. 3

    SerdeでArc <T>をシリアル化または逆シリアル化するにはどうすればよいですか?

  4. 4

    Arc <Mutex <MyStruct <T >>>を使用してスレッド間でジェネリック構造体を共有するにはどうすればよいですか?

  5. 5

    Vec <T>からArc <[T]>を作成することは可能ですか?

  6. 6

    Arc <Mutex <T >>を共有する方法は?

  7. 7

    TがIEquatableを実装しているときに2List <T>を比較するにはどうすればよいですか?

  8. 8

    Arc <RwLock <T >>をArc <RwLock <TraitObject>にキャストします

  9. 9

    ArcとWeakで循環参照を作成するにはどうすればよいですか?

  10. 10

    &HashSet <&T>をIntoIterator <Item =&T>として使用するにはどうすればよいですか?

  11. 11

    SilverlightでList <T>を作成するにはどうすればよいですか?

  12. 12

    IEnumerable <T>を実装するにはどうすればよいですか

  13. 13

    C ++、time_tを生成するにはどうすればよいですか?

  14. 14

    `Vec <Vec <T >>`を行ごとに効率的に反復するにはどうすればよいですか?

  15. 15

    このJsonarrayからTとZを削除するにはどうすればよいですか?

  16. 16

    ARCを使用してSwiftに手動で保持するにはどうすればよいですか?

  17. 17

    Type [T]でT = TypeVar( 'T'、bound = ...)を正しく使用するにはどうすればよいですか?

  18. 18

    TObjectをTObjectList <T>としてキャストするにはどうすればよいですか?

  19. 19

    teeとlogger-t "some tag:"を使用するにはどうすればよいですか?

  20. 20

    特定のファイルにARCを追加するにはどうすればよいですか?

  21. 21

    ʻArc <[u8;を初期化するにはどうすればよいですか。65536]> `効率的に?

  22. 22

    Arc.UserDialogs ActionSheetにアイコンを追加/設定するにはどうすればよいですか?

  23. 23

    IOSのARCの中央にテキストを追加するにはどうすればよいですか?

  24. 24

    ARCモードで参照カウントを確認するにはどうすればよいですか?

  25. 25

    ARCコードで非const型を使用するにはどうすればよいですか?

  26. 26

    ʻIEnumerable <T1> `がʻIEnumerable <T2>`と共変するかどうかを確認するにはどうすればよいですか?

  27. 27

    2つのIEnumerable <T>を新しいIEnumerable <T>に連結するにはどうすればよいですか?

  28. 28

    Tが集計タイプかどうかを確認するにはどうすればよいですか?

  29. 29

    Tが集計タイプかどうかを確認するにはどうすればよいですか?

ホットタグ

アーカイブ