title: Setup For Rust tags: vim nvim neovim rust # Dreams Of Code Video From [this youtube video](https://www.youtube.com/watch?v=mh_EJhH49Ms) His [config from that video is on this github](https://github.com/dreamsofcode-io/neovim-rust) ## neovim for rust * nvchad * also look up astro is another neovim config install chad (do this in `~/.config/chad`) and use e.g. `NVIM_APPNAME=chad` when launching) ## code completion ### lsp server rust analyzer: ``` rustup component add rust-analyzer ``` or ``` nvim lua/custom/chadrc.lua M.ui = { theme = 'catppuccin'} M.plugins = 'custom.plugins' create lua/custom/plugins.lua === local plugins { "williamboman/mason.nvim", opts = { ensure_installed = { "rust-analyzer", }, }, } return plugins === reload nvim === :MasonInstallAll === change lsp config to rust-analyzer in lua/custom/plugins.lua { "neovim/nvim-lspconfig", config = function() require "plugins.configs.lspconfig", require "custom.configs.lspcnfig" end, }, } === create lua/custom/configs/lspconfig.lua local on_attach = require("plugins.configs.lspconfig").on_attach local capabilities = require("plugins.configs.lspconfig").capabilities local lspconfig = require("lspconfig") local util = require "lspconfig/util" lspconfig.rust_analyzer.setup({ on_attach = on_attach, capabilities = capabilities, filetypes = { "rust" }, root_dir = util.root_pattern("Cargo.toml"), settings = { [ 'rust-analyzer' ] = { cargo = { allFeatures = true, }, }, }, }) ``` Format on save: ``` rust-vim plugin plugins = { ... { "rust-lang/rust.vim", ft = "rust", init = function() vim.g.rustfmt_autosave = 1 end }, } ```