diff options
| -rw-r--r-- | lua/mason-core/managers/cargo/init.lua | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lua/mason-core/managers/cargo/init.lua b/lua/mason-core/managers/cargo/init.lua index 8890daf6..07883cbf 100644 --- a/lua/mason-core/managers/cargo/init.lua +++ b/lua/mason-core/managers/cargo/init.lua @@ -125,6 +125,7 @@ end ---@async ---@param install_dir string +---@return Result # Result<table<string, InstalledCrate>> local function get_installed_crates(install_dir) return spawn .cargo({ @@ -188,15 +189,15 @@ end ---@param receipt InstallReceipt<InstallReceiptPackageSource> ---@param install_dir string function M.get_installed_primary_package_version(receipt, install_dir) - return get_installed_crates(install_dir):map(function(pkgs) - if vim.in_fast_event() then - a.scheduler() - end - local pkg = vim.fn.fnamemodify(receipt.primary_source.package, ":t") - return Optional.of_nilable(pkgs[pkg]) - :map(_.prop "version") - :or_else_throw "Failed to find cargo package version." - end) + if vim.in_fast_event() then + a.scheduler() + end + local crate_name = vim.fn.fnamemodify(receipt.primary_source.package, ":t") + return get_installed_crates(install_dir) + :ok() + :map(_.prop(crate_name)) + :map(_.prop "version") + :ok_or(_.always "Failed to find cargo package version.") end return M |
