Comparators
(Supported by dart
, queried with supports = comparators
. Intended to be supported in cpp
and kotlin
)
Some languages allow for overloading the <
/>
/=
/etc operators, similar to Rust's PartialOrd
.
To expose this over Diplomat, use the comparison
attribute on a method that takes another Self
parameter:
#![allow(unused)] fn main() { #[diplomat::bridge] mod ffi { #[diplomat::opaque] #[derive(Ord, PartialOrd, Eq, PartialEq)] struct Foo(u8); impl Foo { #[diplomat::attr(auto, comparison)] pub fn compare(&self, other: &Foo) -> std::cmp::Ordering { self.cmp(other) } } } }
In Dart, this will provide an overloaded ==
, and Foo
will implement Comparable<Foo>
.
We currently do not but Diplomat would like to also support the ability to just overload ==
.