parrot/utils.py
2023-04-08 19:21:37 +02:00

51 lines
1.1 KiB
Python

from typing import Generic, TypeVar
class UnwrapException(Exception):
def __init__(self, *args: object) -> None:
super().__init__(*args)
T = TypeVar("T")
E = TypeVar("E")
class Result(Generic[T, E]):
def __init__(self) -> None:
super().__init__()
def ok(self) -> bool:
raise NotImplementedError()
def value(self) -> T:
raise NotImplementedError()
def error(self) -> E:
raise NotImplementedError()
class Ok(Result[T, E]):
def __init__(self, value: T) -> None:
super().__init__()
self.__value = value
def ok(self) -> bool:
return True
def value(self) -> T:
return self.__value
def error(self) -> E:
raise UnwrapException("cannot unwrap error of ok result")
class Err(Result[T, E]):
def __init__(self, error: E) -> None:
super().__init__()
self.__error = error
def ok(self) -> bool:
return False
def value(self) -> T:
raise UnwrapException("cannot unwrap value of error result")
def error(self) -> E:
return self.__error