return {
  {
    "nvim-treesitter/nvim-treesitter",
    opts = function(_, opts)
      opts.ensure_installed = opts.ensure_installed or {}
      vim.list_extend(opts.ensure_installed, { "ron", "rust", "toml" })
    end,
  },

  -- {
  --   "hrsh7th/nvim-cmp",
  --   dependencies = {
  --     {
  --       "Saecki/crates.nvim",
  --       event = { "BufRead Cargo.toml" },
  --       opts = {
  --         completion = {
  --           cmp = { enabled = true },
  --         },
  --       },
  --     },
  --   },
  --   ---@param opts cmp.ConfigSchema
  --   opts = function(_, opts)
  --     opts.sources = opts.sources or {}
  --     table.insert(opts.sources, { name = "crates" })
  --   end,
  -- },
  --
  -- {
  --   "mrcjkb/rustaceanvim",
  --   version = "^4", -- Recommended
  --   ft = { "rust" },
  --   opts = {
  --     server = {
  --       on_attach = function(_, bufnr)
  --         vim.keymap.set("n", "<leader>lR", function()
  --           vim.cmd.RustLsp("codeAction")
  --         end, { desc = "Code Action", buffer = bufnr })
  --       end,
  --       default_settings = {
  --         -- rust-analyzer language server configuration
  --         ["rust-analyzer"] = {
  --           cargo = {
  --             allFeatures = true,
  --             loadOutDirsFromCheck = true,
  --             runBuildScripts = true,
  --           },
  --           -- Add clippy lints for Rust.
  --           checkOnSave = {
  --             allFeatures = true,
  --             command = "clippy",
  --             extraArgs = { "--no-deps" },
  --           },
  --           procMacro = {
  --             enable = true,
  --             ignored = {
  --               ["async-trait"] = { "async_trait" },
  --               ["napi-derive"] = { "napi" },
  --               ["async-recursion"] = { "async_recursion" },
  --             },
  --           },
  --         },
  --       },
  --     },
  --   },
  --   config = function(_, opts)
  --     vim.g.rustaceanvim = vim.tbl_deep_extend("force", {}, opts or {})
  --   end,
  -- },
  --
  -- {
  --   "neovim/nvim-lspconfig",
  --   opts = {
  --     servers = {
  --       rust_analyzer = {},
  --       taplo = {
  --         keys = {
  --           {
  --             "K",
  --             function()
  --               if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then
  --                 require("crates").show_popup()
  --               else
  --                 vim.lsp.buf.hover()
  --               end
  --             end,
  --             desc = "Show Crate Documentation",
  --           },
  --         },
  --       },
  --     },
  --     setup = {
  --       rust_analyzer = function()
  --         return true
  --       end,
  --     },
  --   },
  -- },
}
