blob: 7cfc47427281468d302513dd973d497145a6c1ac [file] [log] [blame]
// Copyright (c) 2016, 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.
import 'dart:async';
import 'result.dart';
import 'error.dart';
/// A result representing a returned value.
class ValueResult<T> implements Result<T> {
/// The result of a successful computation.
final T value;
@override
bool get isValue => true;
@override
bool get isError => false;
@override
ValueResult<T> get asValue => this;
@override
ErrorResult? get asError => null;
ValueResult(this.value);
@override
void complete(Completer<T> completer) {
completer.complete(value);
}
@override
void addTo(EventSink<T> sink) {
sink.add(value);
}
@override
Future<T> get asFuture => Future.value(value);
@override
int get hashCode => value.hashCode ^ 0x323f1d61;
@override
bool operator ==(Object other) =>
other is ValueResult && value == other.value;
}