共有型

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

#[cxx::bridge]
mod ffi {
    #[derive(Clone, Debug, Hash)]
    struct PlayingCard {
        suit: Suit,
        value: u8,  // A=1, J=11, Q=12, K=13
    }

    enum Suit {
        Clubs,
        Diamonds,
        Hearts,
        Spades,
    }
}
  • サポートされているのは C ライクな(ユニット)列挙型のみです。
  • 共有型に対する #[derive()] では、サポートされるトレイトは限られています。 対応する機能は C++ コードに対しても生成されます。たとえば、 Hash を derive すると、対応する C++ 型に対する std::hash の 実装も生成されます。