mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
52 lines
1.1 KiB
Plaintext
52 lines
1.1 KiB
Plaintext
module std::collections::pair{Type1, Type2};
|
|
|
|
struct Pair
|
|
{
|
|
Type1 first;
|
|
Type2 second;
|
|
}
|
|
|
|
<*
|
|
@param [&out] a
|
|
@param [&out] b
|
|
@require @assignable_to(self.first, $typeof(*a)) : "You cannot assign the first value to a"
|
|
@require @assignable_to(self.second, $typeof(*b)) : "You cannot assign the second value to b"
|
|
*>
|
|
macro void Pair.unpack(&self, a, b)
|
|
{
|
|
*a = self.first;
|
|
*b = self.second;
|
|
}
|
|
|
|
module std::collections::triple{Type1, Type2, Type3};
|
|
|
|
struct Triple
|
|
{
|
|
Type1 first;
|
|
Type2 second;
|
|
Type3 third;
|
|
}
|
|
|
|
<*
|
|
@param [&out] a
|
|
@param [&out] b
|
|
@param [&out] c
|
|
@require @assignable_to(self.first, $typeof(*a)) : "You cannot assign the first value to a"
|
|
@require @assignable_to(self.second, $typeof(*b)) : "You cannot assign the second value to b"
|
|
@require @assignable_to(self.third, $typeof(*c)) : "You cannot assign the second value to c"
|
|
*>
|
|
macro void Triple.unpack(&self, a, b, c)
|
|
{
|
|
*a = self.first;
|
|
*b = self.second;
|
|
*c = self.third;
|
|
}
|
|
|
|
module std::collections::tuple{Type1, Type2};
|
|
|
|
struct Tuple @deprecated("Use 'Pair' instead")
|
|
{
|
|
Type1 first;
|
|
Type2 second;
|
|
}
|