local M = {} ---@class Ok<T> { value: T, error: nil, is_err: false } ---@class Err<T> { value: nil, error: T, is_err: true } ---@class Result<T, U> ---| Ok<T> ---| Err<U> ---Return ok result ---@generic T ---@param value T ---@return Ok<T> M.ok = function(value) return { value = value, error = nil, is_err = false, } end ---Return error result ---@generic T ---@param error T ---@return Err<T> M.err = function(error) return { value = nil, error = error, is_err = true, } end return M