blob: 6835936776952ad98a84319226b15c0125f3d14f [file] [log] [blame]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/// A container that is either [T1] or [T2].
class Either2<T1, T2> {
final int _which;
final Object? _value;
Either2.t1(T1 t1)
: _which = 1,
_value = t1;
Either2.t2(T2 t2)
: _which = 2,
_value = t2;
T map<T>(T Function(T1) f1, T Function(T2) f2) {
if (_which == 1) {
return f1(_value as T1);
} else {
return f2(_value as T2);
}
}
@override
String toString() => map((t) => t.toString(), (t) => t.toString());
}