| // 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()); | |
| } |