Cargo VS rust-analyzer

Compare Cargo vs rust-analyzer and see what are their differences.

Cargo

The Rust package manager (by rust-lang)

rust-analyzer

A Rust compiler front-end for IDEs [Moved to: https://github.com/rust-lang/rust-analyzer] (by rust-analyzer)
Our great sponsors
  • SonarLint - Clean code begins in your IDE with SonarLint
  • Scout APM - Less time debugging, more time building
  • SaaSHub - Software Alternatives and Reviews
Cargo rust-analyzer
133 200
8,522 9,320
1.3% -
9.8 10.0
8 days ago 3 months ago
Rust Rust
Apache License 2.0 GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Cargo

Posts with mentions or reviews of Cargo. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-06-30.
  • Announcing Rust 1.62.0
    11 projects | reddit.com/r/rust | 30 Jun 2022
    Can you google it please? I'm on mobile. A quick search turned this up, which should lead you in the right direction: https://github.com/rust-lang/cargo/issues/5657
    11 projects | reddit.com/r/rust | 30 Jun 2022
    It is an unintentional breaking change in cargo_util https://github.com/rust-lang/cargo/issues/10803
    11 projects | reddit.com/r/rust | 30 Jun 2022
    Otherwise I did include this as an option in the shorthand feature issue.
  • Rust 1.62.0
    5 projects | news.ycombinator.com | 30 Jun 2022
    For those unaware, some ask "why"

    - No need to look up the version (though some IDEs do it for you)

    - Auto-completion

    - It shows you what features the crate has and whether they are activated, making it easier to discover features you need to enable or what you can remove to improve compile times

    - Make it easier to document how to add a set of dependencies needed for a project (e.g. "Run `cargo add serde serde_json -F serde/derive`")

    - The opportunity for more QoL improvements, see https://github.com/rust-lang/cargo/issues?q=is%3Aopen+is%3Ai...

    It is impressive the amount of work it took to get this ready. I took over the effort almost a year ago and at times was working full time on it (thanks to my employer). Just my part included

    - a near rewrite of the format-preserving toml parser (toml_edit)

    - a major revamp of the UI

    - a major revamp of testing

    - a near rewrite to make it compatible with cargo's code base

  • Any active open source repos built using Rust that need development ?
    11 projects | reddit.com/r/rust | 16 Jun 2022
    Has anyone provided feedback on workspace inheritance yet?
  • Wasi dependencies in Cargo.lock
    1 project | reddit.com/r/rust | 15 Jun 2022
    Cargo currently does not produce minimal lock files. During generation, it includes things like platform specific dependencies etc, which has been a blocker for other feature like platform specific cargo vendoring. The closest to a tracking issue is https://github.com/rust-lang/cargo/issues/5133 and a few other issues linked inside it.
  • Why are rustflags in target.cfg sections not applied?
    1 project | reddit.com/r/rust | 5 Jun 2022
    Ah, there is an issue for this: https://github.com/rust-lang/cargo/issues/6858
  • Ctrl+C, Ctrl+V
    1 project | reddit.com/r/ProgrammerHumor | 2 Jun 2022
  • How to compile for native and wasm without erasing build artifacts?
    2 projects | reddit.com/r/rust | 31 May 2022
    I've encountered this before when trying to compile for different targets. I found https://github.com/rust-lang/cargo/issues/9239 which seems relevant. In my case a workaround was to pass --target explicitly when compiling for the host.
  • Is there any docs about crates.io API
    5 projects | reddit.com/r/rust | 29 May 2022
    Lurker here. Haven’t started to learn rust but wouldn’t this be self documenting by looking at cargo? I have a feeling there would be little other public endpoints outside of that. Very cursory look yields: https://github.com/rust-lang/cargo/blob/master/crates/crates-io/lib.rs

rust-analyzer

Posts with mentions or reviews of rust-analyzer. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-06-20.
  • rust-analyzer changelog #134
    7 projects | reddit.com/r/rust | 20 Jun 2022
    #12517 (first contribution) fix completion for methods in trait generated by macro.
    7 projects | reddit.com/r/rust | 20 Jun 2022
  • LSP Rust Analyzer keeps telling me `Error NO_RESULT_CALLBACK_FOUND`
    3 projects | reddit.com/r/neovim | 12 Jun 2022
    -- all the opts to send to nvim-lspconfig -- these override the defaults set by rust-tools.nvim -- see https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#rust_analyzer server = { -- on_attach is a callback called when the language server attachs to the buffer -- on_attach = on_attach, settings = { -- to enable rust-analyzer settings visit: -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc ["rust-analyzer"] = { -- enable clippy on save checkOnSave = { command = "clippy" }, assist = { importGranularity = "module", importPrefix = "self", }, cargo = { loadOutDirsFromCheck = true }, procMacro = { enable = true }, } } },
  • rust-analyzer changelog #130
    2 projects | reddit.com/r/rust | 23 May 2022
    #12349 publish universal VSIX to make Code happy.
    2 projects | reddit.com/r/rust | 23 May 2022
    Big fan of #12263!
  • rust-analyzer changelog #126
    1 project | reddit.com/r/rust | 25 Apr 2022
    #12037 remove rust-analyzer.inlayHints.enable and set language scope when toggling hints.
  • Anyone have autocomplete working with rust-tools, nvm-cmp, etc.?
    6 projects | reddit.com/r/neovim | 14 Apr 2022
    -- Provide some indication that rust-analyzer is busy! local lsp_status = require('lsp-status') lsp_status.register_progress() -- Basic rust/lsp/cmp settings from https://sharksforarms.dev/posts/neovim-rust/ local nvim_lsp = require('lspconfig') local opts = { tools = { -- rust-tools options autoSetHints = true, hover_with_actions = true, inlay_hints = { show_parameter_hints = false, parameter_hints_prefix = "", other_hints_prefix = "=> ", }, }, -- all the opts to send to nvim-lspconfig -- these override the defaults set by rust-tools.nvim -- see https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#rust_analyzer server = { -- on_attach is a callback called when the language server attachs to the buffer on_attach = lsp_status.on_attach, capabilities = lsp_status.capabilities, settings = { -- to enable rust-analyzer settings visit: -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc -- and more: https://github.com/simrat39/rust-tools.nvim/wiki/Server-Configuration-Schema ["rust-analyzer"] = { -- enable clippy on save checkOnSave = { command = "clippy" }, } } }, } require('rust-tools').setup(opts) -- Setup Completion -- See https://github.com/hrsh7th/nvim-cmp#basic-configuration -- Used for super-tab functionality local has_words_before = function() local line, col = unpack(vim.api.nvim_win_get_cursor(0)) return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil end local feedkey = function(key, mode) vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true) end local lspkind = require('lspkind') local cmp = require'cmp' cmp.setup({ completion = { autocomplete = true }, -- Enable LSP snippets snippet = { expand = function(args) vim.fn["vsnip#anonymous"](args.body) end, }, mapping = { [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), [''] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true, }), -- Add tab support [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif vim.fn["vsnip#available"](1) == 1 then feedkey("(vsnip-expand-or-jump)", "") elseif has_words_before() then cmp.complete() else fallback() -- The fallback function sends a already mapped key. In this case, it's probably ``. end end, { "i", "s" }), [""] = cmp.mapping(function() if cmp.visible() then cmp.select_prev_item() elseif vim.fn["vsnip#jumpable"](-1) == 1 then feedkey("(vsnip-jump-prev)", "") end end, { "i", "s" }), }, -- Installed sources sources = { { name = 'nvim_lsp' }, --, trigger_characters={'.', ":"} }, { name = 'vsnip' }, { name = 'path' }, { name = 'buffer' }, { name = 'nvim_lsp_signature_help' }, { name = 'nvim_lsp_document_symbol' }, }, -- Fancy symbols formatting = { format = lspkind.cmp_format({ mode = 'symbol_text', -- show both symbol & text for now maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters) -- The function below will be called before any actual modifications from lspkind -- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30)) --before = function (entry, vim_item) --... --return vim_item --end }) }, completion = { autocomplete = true }, })
  • Rust-Analyzer - A rust compiler front-end for ides
    1 project | reddit.com/r/rust | 14 Apr 2022
    1 project | reddit.com/r/github_trends | 14 Apr 2022
  • rust-analyzer changelog #123
    1 project | reddit.com/r/rust | 4 Apr 2022
    This seems to solve a bug when using Pest

What are some alternatives?

When comparing Cargo and rust-analyzer you can also consider the following projects:

vscode-rust - Rust extension for Visual Studio Code

coc.nvim - Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.

rustfmt - Format Rust code

eglot - A client for Language Server Protocol servers

ale - Check syntax in Vim asynchronously and fix files, with Language Server Protocol (LSP) support

vim-lsp - async language server protocol plugin for vim and neovim

rust - Empowering everyone to build reliable and efficient software.

vim-lsp-settings - Auto configurations for Language Server for vim-lsp

typescript-language-server - TypeScript & JavaScript Language Server

intellij-lsp-server - Exposes IntelliJ IDEA features through the Language Server Protocol.

neovim-rust - Sample neovim and vim configurations for Rust development

intellij-rust - Rust plugin for the IntelliJ Platform