PythonでResult型を使うために、result==0.17.0
を使ってみたのですが、ドキュメントのmypy関連の記述が嘘なのでメモ。
type guard functionsは機能しません。is_err
, is_ok
ではなく、isinstance
を使いましょう。
from result import Result, Ok, Err, is_err
def fun(arg: Result[int, str]) -> int:
# 以下を if is_err(arg): にすると
if isinstance(arg, Err):
res = arg.err_value
ret = len(res)
return ret
# ここで arg の型は Result[int, str] のまま
ret = arg.ok_value
return ret
コメント