sealed class Result<T, E> {}

final class Ok<T, E> implements Result<T, E> {
  final T value;

  const Ok(this.value);
}

final class Err<T, E> implements Result<T, E> {
  final E value;

  const Err(this.value);
}