| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | *ft_rust.txt*      Filetype plugin for Rust | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | CONTENTS                                                      *rust* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 1. Introduction                                                   |rust-intro| | 
					
						
							|  |  |  | 2. Settings                                                    |rust-settings| | 
					
						
							|  |  |  | 3. Commands                                                    |rust-commands| | 
					
						
							|  |  |  | 4. Mappings                                                    |rust-mappings| | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | INTRODUCTION                                                      *rust-intro* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | This plugin provides syntax and supporting functionality for the Rust | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | filetype. It requires Vim 8 or higher for full functionality. Some commands | 
					
						
							|  |  |  | will not work on earlier versions. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | SETTINGS                                                       *rust-settings* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | This plugin has a few variables you can define in your vimrc that change the | 
					
						
							|  |  |  | behavior of the plugin. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | Some variables can be set buffer local (`:b` prefix), and the buffer local | 
					
						
							|  |  |  | will take precedence over the global `g:` counterpart. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                                 *g:rustc_path* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rustc_path~ | 
					
						
							|  |  |  | 	Set this option to the path to rustc for use in the |:RustRun| and | 
					
						
							|  |  |  | 	|:RustExpand| commands. If unset, "rustc" will be located in $PATH: > | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 	    let g:rustc_path = $HOME."/bin/rustc" | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                   *g:rustc_makeprg_no_percent* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rustc_makeprg_no_percent~ | 
					
						
							|  |  |  | 	Set this option to 1 to have 'makeprg' default to "rustc" instead of | 
					
						
							|  |  |  | 	"rustc %": > | 
					
						
							|  |  |  | 	    let g:rustc_makeprg_no_percent = 1 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                               *g:rust_conceal* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_conceal~ | 
					
						
							|  |  |  | 	Set this option to turn on the basic |conceal| support: > | 
					
						
							|  |  |  | 	    let g:rust_conceal = 1 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                      *g:rust_conceal_mod_path* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_conceal_mod_path~ | 
					
						
							|  |  |  | 	Set this option to turn on |conceal| for the path connecting token | 
					
						
							|  |  |  | 	"::": > | 
					
						
							|  |  |  | 	    let g:rust_conceal_mod_path = 1 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                           *g:rust_conceal_pub* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_conceal_pub~ | 
					
						
							|  |  |  | 	Set this option to turn on |conceal| for the "pub" token: > | 
					
						
							|  |  |  | 	    let g:rust_conceal_pub = 1 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                      *g:rust_recommended_style* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_recommended_style~ | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |         Set this option to enable vim indentation and textwidth settings to | 
					
						
							|  |  |  |         conform to style conventions of the rust standard library (i.e. use 4 | 
					
						
							|  |  |  |         spaces for indents and sets 'textwidth' to 99). This option is enabled | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 	by default. To disable it: > | 
					
						
							|  |  |  | 	    let g:rust_recommended_style = 0 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                                  *g:rust_fold* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_fold~ | 
					
						
							|  |  |  | 	Set this option to turn on |folding|: > | 
					
						
							|  |  |  | 	    let g:rust_fold = 1 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 	Value		Effect ~ | 
					
						
							|  |  |  | 	0		No folding | 
					
						
							|  |  |  | 	1		Braced blocks are folded. All folds are open by | 
					
						
							|  |  |  | 			default. | 
					
						
							|  |  |  | 	2		Braced blocks are folded. 'foldlevel' is left at the | 
					
						
							|  |  |  | 			global value (all folds are closed by default). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                   *g:rust_bang_comment_leader* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_bang_comment_leader~ | 
					
						
							|  |  |  | 	Set this option to 1 to preserve the leader on multi-line doc comments | 
					
						
							|  |  |  | 	using the /*! syntax: > | 
					
						
							|  |  |  | 	    let g:rust_bang_comment_leader = 1 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                 *g:rust_use_custom_ctags_defs* | 
					
						
							|  |  |  | g:rust_use_custom_ctags_defs~ | 
					
						
							|  |  |  | 	Set this option to 1 if you have customized ctags definitions for Rust | 
					
						
							|  |  |  | 	and do not wish for those included with rust.vim to be used: > | 
					
						
							|  |  |  | 	    let g:rust_use_custom_ctags_defs = 1 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	NOTE: rust.vim's built-in definitions are only used for the Tagbar Vim | 
					
						
							|  |  |  | 	plugin, if you have it installed, AND if Universal Ctags is not | 
					
						
							|  |  |  | 	detected. This is because Universal Ctags already has built-in | 
					
						
							|  |  |  | 	support for Rust when used with Tagbar. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Also, note that when using ctags other than Universal Ctags, it is not | 
					
						
							|  |  |  | 	automatically used when generating |tags| files that Vim can use to | 
					
						
							|  |  |  | 	navigate to definitions across different source files. Feel free to | 
					
						
							|  |  |  | 	copy `rust.vim/ctags/rust.ctags` into your own `~/.ctags` if you wish | 
					
						
							|  |  |  | 	to generate |tags| files. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                  *g:ftplugin_rust_source_path* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:ftplugin_rust_source_path~ | 
					
						
							|  |  |  | 	Set this option to a path that should be prepended to 'path' for Rust | 
					
						
							|  |  |  | 	source files: > | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 	    let g:ftplugin_rust_source_path = $HOME.'/dev/rust' | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                        *g:rustfmt_command* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rustfmt_command~ | 
					
						
							|  |  |  | 	Set this option to the name of the 'rustfmt' executable in your $PATH. If | 
					
						
							|  |  |  | 	not specified it defaults to 'rustfmt' : > | 
					
						
							|  |  |  | 	    let g:rustfmt_command = 'rustfmt' | 
					
						
							|  |  |  | < | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                        *g:rustfmt_autosave* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rustfmt_autosave~ | 
					
						
							|  |  |  | 	Set this option to 1 to run |:RustFmt| automatically when saving a | 
					
						
							|  |  |  | 	buffer. If not specified it defaults to 0 : > | 
					
						
							|  |  |  | 	    let g:rustfmt_autosave = 0 | 
					
						
							|  |  |  | < | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 	There is also a buffer-local b:rustfmt_autosave that can be set for | 
					
						
							|  |  |  | 	the same purpose, and can override the global setting. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                         *g:rustfmt_autosave_if_config_present* | 
					
						
							|  |  |  | g:rustfmt_autosave_if_config_present~ | 
					
						
							|  |  |  | 	Set this option to 1 to have *b:rustfmt_autosave* be set automatically | 
					
						
							|  |  |  | 	if a `rustfmt.toml` file is present in any parent directly leading to | 
					
						
							|  |  |  | 	the file being edited. If not set, default to 0: > | 
					
						
							|  |  |  | 	    let g:rustfmt_autosave_if_config_present = 0 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 	This is useful to have `rustfmt` only execute on save, on projects | 
					
						
							|  |  |  | 	that have `rustfmt.toml` configuration. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	There is also a buffer-local b:rustfmt_autosave_if_config_present | 
					
						
							|  |  |  | 	that can be set for the same purpose, which can overrides the global | 
					
						
							|  |  |  | 	setting. | 
					
						
							|  |  |  |                                                        *g:rustfmt_fail_silently* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rustfmt_fail_silently~ | 
					
						
							|  |  |  | 	Set this option to 1 to prevent 'rustfmt' from populating the | 
					
						
							|  |  |  | 	|location-list| with errors. If not specified it defaults to 0: > | 
					
						
							|  |  |  | 	    let g:rustfmt_fail_silently = 0 | 
					
						
							|  |  |  | < | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                        *g:rustfmt_options* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rustfmt_options~ | 
					
						
							|  |  |  | 	Set this option to a string of options to pass to 'rustfmt'. The | 
					
						
							|  |  |  | 	write-mode is already set to 'overwrite'. If not specified it | 
					
						
							|  |  |  | 	defaults to '' : > | 
					
						
							|  |  |  | 	    let g:rustfmt_options = '' | 
					
						
							|  |  |  | < | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                        *g:rustfmt_emit_files* | 
					
						
							|  |  |  | g:rustfmt_emit_files~ | 
					
						
							|  |  |  | 	If not specified rust.vim tries to detect the right parameter to | 
					
						
							|  |  |  | 	pass to rustfmt based on its reported version. Otherwise, it | 
					
						
							|  |  |  | 	determines whether to run rustfmt with '--emit=files' (when 1 is | 
					
						
							|  |  |  | 	provided) instead of '--write-mode=overwrite'. > | 
					
						
							|  |  |  | 	    let g:rustfmt_emit_files = 0 | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-01 20:50:51 +01:00
										 |  |  | < | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                           *g:rust_playpen_url* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_playpen_url~ | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 	Set this option to override the url for the playpen to use: > | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 	    let g:rust_playpen_url = 'https://play.rust-lang.org/' | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                         *g:rust_shortener_url* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | g:rust_shortener_url~ | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 	Set this option to override the url for the url shortener: > | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 	    let g:rust_shortener_url = 'https://is.gd/' | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |                                                         *g:rust_clip_command* | 
					
						
							|  |  |  | g:rust_clip_command~ | 
					
						
							|  |  |  | 	Set this option to the command used in your OS to copy the Rust Play | 
					
						
							|  |  |  | 	url to the clipboard: > | 
					
						
							|  |  |  | 	    let g:rust_clip_command = 'xclip -selection clipboard' | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                        *g:cargo_makeprg_params* | 
					
						
							|  |  |  | g:cargo_makeprg_params~ | 
					
						
							|  |  |  | 	Set this option to the string of parameters to pass to cargo. If not | 
					
						
							|  |  |  | 	specified it defaults to '$*' : > | 
					
						
							|  |  |  | 	    let g:cargo_makeprg_params = 'build' | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                   *g:cargo_shell_command_runner* | 
					
						
							|  |  |  | g:cargo_shell_command_runner~ | 
					
						
							|  |  |  | 	Set this option to change how to run shell commands for cargo commands | 
					
						
							|  |  |  | 	|:Cargo|, |:Cbuild|, |:Crun|, ... | 
					
						
							|  |  |  | 	By default, |:terminal| is used to run shell command in terminal window | 
					
						
							|  |  |  | 	asynchronously. But if you prefer |:!| for running the commands, it can | 
					
						
							|  |  |  | 	be specified: > | 
					
						
							|  |  |  | 	    let g:cargo_shell_command_runner = '!' | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Integration with Syntastic                                    *rust-syntastic* | 
					
						
							|  |  |  | -------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This plugin automatically integrates with the Syntastic checker. There are two | 
					
						
							|  |  |  | checkers provided: 'rustc', and 'cargo'. The latter invokes 'Cargo' in order to | 
					
						
							|  |  |  | build code, and the former delivers a single edited '.rs' file as a compilation | 
					
						
							|  |  |  | target directly to the Rust compiler, `rustc`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Because Cargo is almost exclusively being used for building Rust code these | 
					
						
							|  |  |  | days, 'cargo' is the default checker. > | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let g:syntastic_rust_checkers = ['cargo'] | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | If you would like to change it, you can set `g:syntastic_rust_checkers` to a | 
					
						
							|  |  |  | different value. | 
					
						
							|  |  |  |                                           *g:rust_cargo_avoid_whole_workspace* | 
					
						
							|  |  |  |                                           *b:rust_cargo_avoid_whole_workspace* | 
					
						
							|  |  |  | g:rust_cargo_avoid_whole_workspace~ | 
					
						
							|  |  |  | 	When editing a crate that is part of a Cargo workspace, and this | 
					
						
							|  |  |  | 	option is set to 1 (the default), then 'cargo' will be executed | 
					
						
							|  |  |  | 	directly in that crate directory instead of in the workspace | 
					
						
							|  |  |  | 	directory. Setting 0 prevents this behavior - however be aware that if | 
					
						
							|  |  |  | 	you are working in large workspace, Cargo commands may take more time, | 
					
						
							|  |  |  | 	plus the Syntastic error list may include all the crates in the | 
					
						
							|  |  |  | 	workspace. > | 
					
						
							|  |  |  |             let g:rust_cargo_avoid_whole_workspace = 0 | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  |                                               *g:rust_cargo_check_all_targets* | 
					
						
							|  |  |  |                                               *b:rust_cargo_check_all_targets* | 
					
						
							|  |  |  | g:rust_cargo_check_all_targets~ | 
					
						
							|  |  |  | 	When set to 1, the `--all-targets` option will be passed to cargo when | 
					
						
							|  |  |  | 	Syntastic executes it, allowing the linting of all targets under the | 
					
						
							|  |  |  | 	package. | 
					
						
							|  |  |  | 	The default is 0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                               *g:rust_cargo_check_all_features* | 
					
						
							|  |  |  |                                               *b:rust_cargo_check_all_features* | 
					
						
							|  |  |  | g:rust_cargo_check_all_features~ | 
					
						
							|  |  |  | 	When set to 1, the `--all-features` option will be passed to cargo when | 
					
						
							|  |  |  | 	Syntastic executes it, allowing the linting of all features of the | 
					
						
							|  |  |  | 	package. | 
					
						
							|  |  |  | 	The default is 0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                  *g:rust_cargo_check_examples* | 
					
						
							|  |  |  |                                                  *b:rust_cargo_check_examples* | 
					
						
							|  |  |  | g:rust_cargo_check_examples~ | 
					
						
							|  |  |  | 	When set to 1, the `--examples` option will be passed to cargo when | 
					
						
							|  |  |  | 	Syntastic executes it, to prevent the exclusion of examples from | 
					
						
							|  |  |  | 	linting. The examples are normally under the `examples/` directory of | 
					
						
							|  |  |  | 	the crate. | 
					
						
							|  |  |  | 	The default is 0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                     *g:rust_cargo_check_tests* | 
					
						
							|  |  |  |                                                     *b:rust_cargo_check_tests* | 
					
						
							|  |  |  | g:rust_cargo_check_tests~ | 
					
						
							|  |  |  | 	When set to 1, the `--tests` option will be passed to cargo when | 
					
						
							|  |  |  | 	Syntastic executes it, to prevent the exclusion of tests from linting. | 
					
						
							|  |  |  | 	The tests are normally under the `tests/` directory of the crate. | 
					
						
							|  |  |  | 	The default is 0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                   *g:rust_cargo_check_benches* | 
					
						
							|  |  |  |                                                   *b:rust_cargo_check_benches* | 
					
						
							|  |  |  | g:rust_cargo_check_benches~ | 
					
						
							|  |  |  | 	When set to 1, the `--benches` option will be passed to cargo when | 
					
						
							|  |  |  | 	Syntastic executes it.  The benches are normally under the `benches/` | 
					
						
							|  |  |  | 	directory of the crate. | 
					
						
							|  |  |  | 	The default is 0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Integration with auto-pairs                                    *rust-auto-pairs* | 
					
						
							|  |  |  | --------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This plugin automatically configures the auto-pairs plugin not to duplicate | 
					
						
							|  |  |  | single quotes, which are used more often for lifetime annotations than for | 
					
						
							|  |  |  | single character literals. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                                   *g:rust_keep_autopairs_default* | 
					
						
							|  |  |  | g:rust_keep_autopairs_default~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Don't override auto-pairs default for the Rust filetype. The default | 
					
						
							|  |  |  | 	is 0. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | COMMANDS                                                       *rust-commands* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Invoking Cargo | 
					
						
							|  |  |  | -------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This plug defines very simple shortcuts for invoking Cargo from with Vim. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cargo <args>                                                       *:Cargo* | 
					
						
							|  |  |  |                 Runs 'cargo' with the provided arguments. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cbuild <args>                                                     *:Cbuild* | 
					
						
							|  |  |  |                 Shortcut for 'cargo build`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cclean <args>                                                     *:Cclean* | 
					
						
							|  |  |  |                 Shortcut for 'cargo clean`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cdoc <args>                                                         *:Cdoc* | 
					
						
							|  |  |  |                 Shortcut for 'cargo doc`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cinit <args>                                                       *:Cinit* | 
					
						
							|  |  |  |                 Shortcut for 'cargo init`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Crun <args>                                                         *:Crun* | 
					
						
							|  |  |  |                 Shortcut for 'cargo run`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Ctest <args>                                                       *:Ctest* | 
					
						
							|  |  |  |                 Shortcut for 'cargo test`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cupdate <args>                                                   *:Cupdate* | 
					
						
							|  |  |  |                 Shortcut for 'cargo update`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cbench <args>                                                     *:Cbench* | 
					
						
							|  |  |  |                 Shortcut for 'cargo bench`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Csearch <args>                                                   *:Csearch* | 
					
						
							|  |  |  |                 Shortcut for 'cargo search`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cpublish <args>                                                 *:Cpublish* | 
					
						
							|  |  |  |                 Shortcut for 'cargo publish`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cinstall <args>                                                 *:Cinstall* | 
					
						
							|  |  |  |                 Shortcut for 'cargo install`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :Cruntarget <args>                                                 *:Cruntarget* | 
					
						
							|  |  |  |                 Shortcut for 'cargo run --bin' or 'cargo run --example', | 
					
						
							|  |  |  |                 depending on the currently open buffer. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Formatting | 
					
						
							|  |  |  | ---------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :RustFmt                                                       *:RustFmt* | 
					
						
							|  |  |  | 		Runs |g:rustfmt_command| on the current buffer. If | 
					
						
							|  |  |  | 		|g:rustfmt_options| is set then those will be passed to the | 
					
						
							|  |  |  | 		executable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		If |g:rustfmt_fail_silently| is 0 (the default) then it | 
					
						
							|  |  |  | 		will populate the |location-list| with the errors from | 
					
						
							|  |  |  | 		|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1 | 
					
						
							|  |  |  | 		then it will not populate the |location-list|. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :RustFmtRange                                                  *:RustFmtRange* | 
					
						
							|  |  |  | 		Runs |g:rustfmt_command| with selected range. See | 
					
						
							|  |  |  | 		|:RustFmt| for any other information. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Playpen integration | 
					
						
							|  |  |  | ------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :RustPlay                                                          *:RustPlay* | 
					
						
							|  |  |  | 		This command will only work if you have web-api.vim installed | 
					
						
							|  |  |  | 		(available at https://github.com/mattn/webapi-vim).  It sends the | 
					
						
							|  |  |  | 		current selection, or if nothing is selected, the entirety of the | 
					
						
							|  |  |  | 		current buffer to the Rust playpen, and emits a message with the | 
					
						
							|  |  |  | 		shortened URL to the playpen. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 		|g:rust_playpen_url| is the base URL to the playpen, by default | 
					
						
							|  |  |  | 		"https://play.rust-lang.org/". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		|g:rust_shortener_url| is the base url for the shorterner, by | 
					
						
							|  |  |  | 		default "https://is.gd/" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		|g:rust_clip_command| is the command to run to copy the | 
					
						
							|  |  |  | 		playpen url to the clipboard of your system. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Evaluation of a single Rust file | 
					
						
							|  |  |  | -------------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NOTE: These commands are useful only when working with standalone Rust files, | 
					
						
							|  |  |  | which is usually not the case for common Rust development. If you wish to | 
					
						
							|  |  |  | building Rust crates from with Vim can should use Vim's make, Syntastic, or | 
					
						
							|  |  |  | functionality from other plugins. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :RustRun  [args]                                                    *:RustRun* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | :RustRun! [rustc-args] [--] [args] | 
					
						
							|  |  |  | 		Compiles and runs the current file. If it has unsaved changes, | 
					
						
							|  |  |  | 		it will be saved first using |:update|. If the current file is | 
					
						
							|  |  |  | 		an unnamed buffer, it will be written to a temporary file | 
					
						
							|  |  |  | 		first. The compiled binary is always placed in a temporary | 
					
						
							|  |  |  | 		directory, but is run from the current directory. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		The arguments given to |:RustRun| will be passed to the | 
					
						
							|  |  |  | 		compiled binary. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		If ! is specified, the arguments are passed to rustc instead. | 
					
						
							|  |  |  | 		A "--" argument will separate the rustc arguments from the | 
					
						
							|  |  |  | 		arguments passed to the binary. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		If |g:rustc_path| is defined, it is used as the path to rustc. | 
					
						
							|  |  |  | 		Otherwise it is assumed rustc can be found in $PATH. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | :RustExpand  [args]                                              *:RustExpand* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | :RustExpand! [TYPE] [args] | 
					
						
							|  |  |  | 		Expands the current file using --pretty and displays the | 
					
						
							|  |  |  | 		results in a new split. If the current file has unsaved | 
					
						
							|  |  |  | 		changes, it will be saved first using |:update|. If the | 
					
						
							|  |  |  | 		current file is an unnamed buffer, it will be written to a | 
					
						
							|  |  |  | 		temporary file first. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		The arguments given to |:RustExpand| will be passed to rustc. | 
					
						
							|  |  |  | 		This is largely intended for specifying various --cfg | 
					
						
							|  |  |  | 		configurations. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		If ! is specified, the first argument is the expansion type to | 
					
						
							|  |  |  | 		pass to rustc --pretty. Otherwise it will default to | 
					
						
							|  |  |  | 		"expanded". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		If |g:rustc_path| is defined, it is used as the path to rustc. | 
					
						
							|  |  |  | 		Otherwise it is assumed rustc can be found in $PATH. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | :RustEmitIr [args]                                               *:RustEmitIr* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 		Compiles the current file to LLVM IR and displays the results | 
					
						
							|  |  |  | 		in a new split. If the current file has unsaved changes, it | 
					
						
							|  |  |  | 		will be saved first using |:update|. If the current file is an | 
					
						
							|  |  |  | 		unnamed buffer, it will be written to a temporary file first. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		The arguments given to |:RustEmitIr| will be passed to rustc. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		If |g:rustc_path| is defined, it is used as the path to rustc. | 
					
						
							|  |  |  | 		Otherwise it is assumed rustc can be found in $PATH. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | :RustEmitAsm [args]                                             *:RustEmitAsm* | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 		Compiles the current file to assembly and displays the results | 
					
						
							|  |  |  | 		in a new split. If the current file has unsaved changes, it | 
					
						
							|  |  |  | 		will be saved first using |:update|. If the current file is an | 
					
						
							|  |  |  | 		unnamed buffer, it will be written to a temporary file first. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		The arguments given to |:RustEmitAsm| will be passed to rustc. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		If |g:rustc_path| is defined, it is used as the path to rustc. | 
					
						
							|  |  |  | 		Otherwise it is assumed rustc can be found in $PATH. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | Running test(s) | 
					
						
							|  |  |  | --------------- | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | :[N]RustTest[!] [options]                                       *:RustTest* | 
					
						
							|  |  |  | 		Runs a test under the cursor when the current buffer is in a | 
					
						
							|  |  |  | 		cargo project with "cargo test" command. If the command did | 
					
						
							|  |  |  | 		not find any test function under the cursor, it stops with an | 
					
						
							|  |  |  | 		error message. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 		When N is given, adjust the size of the new window to N lines | 
					
						
							|  |  |  | 		or columns. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 		When ! is given, runs all tests regardless of current cursor | 
					
						
							|  |  |  | 		position. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 		When [options] is given, it is passed to "cargo" command | 
					
						
							|  |  |  | 		arguments. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 		When the current buffer is outside cargo project, the command | 
					
						
							|  |  |  | 		runs "rustc --test" command instead of "cargo test" as | 
					
						
							|  |  |  | 		fallback. All tests are run regardless of adding ! since there | 
					
						
							|  |  |  | 		is no way to run specific test function with rustc. [options] | 
					
						
							|  |  |  | 		is passed to "rustc" command arguments in the case. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | 		Takes optional modifiers (see |<mods>|):  > | 
					
						
							|  |  |  | 		    :tab RustTest | 
					
						
							|  |  |  | 		    :belowright 16RustTest | 
					
						
							|  |  |  | 		    :leftabove vert 80RustTest | 
					
						
							|  |  |  | < | 
					
						
							|  |  |  | rust.vim Debugging | 
					
						
							|  |  |  | ------------------ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :RustInfo                                                          *:RustInfo* | 
					
						
							|  |  |  | 		Emits debugging info of the Vim Rust plugin. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | :RustInfoToClipboard                                      *:RustInfoClipboard* | 
					
						
							|  |  |  | 		Saves debugging info of the Vim Rust plugin to the default | 
					
						
							|  |  |  | 		register. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | :RustInfoToFile [filename]                                   *:RustInfoToFile* | 
					
						
							| 
									
										
										
										
											2023-09-24 23:07:39 +02:00
										 |  |  | 		Saves debugging info of the Vim Rust plugin to the given file, | 
					
						
							|  |  |  | 		overwriting it. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  | ============================================================================== | 
					
						
							|  |  |  | MAPPINGS                                                       *rust-mappings* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This plugin defines mappings for |[[| and |]]| to support hanging indents. | 
					
						
							| 
									
										
										
										
											2017-03-21 19:18:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2023-09-12 13:23:38 -05:00
										 |  |  |  vim:tw=78:sw=4:noet:ts=8:ft=help:norl: |