const Awaiting = enum(@Int(.unsigned, @bitSizeOf(usize) - shift)) fn subWrap(lhs: Awaiting, rhs: Awaiting) Awaitingfn fromCancelable(cancelable: *Cancelable) Awaitingfn toCancelable(awaiting: Awaiting) *Cancelable119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 const Awaiting = enum(@Int(.unsigned, @bitSizeOf(usize) - shift)) {
nothing = 0,
group = 1,
_,
const shift = 1;
fn subWrap(lhs: Awaiting, rhs: Awaiting) Awaiting {
return @fromBackingInt(@intCast(@backingInt(lhs) -% @backingInt(rhs)));
}
fn fromCancelable(cancelable: *Cancelable) Awaiting {
return @fromBackingInt(@intCast(@shrExact(@intFromPtr(cancelable), shift)));
}
fn toCancelable(awaiting: Awaiting) *Cancelable {
return @ptrFromInt(@shlExact(@as(usize, @backingInt(awaiting)), shift));
}
}