Cross Platform Rust Repl
:help => print help
:reset => reset repl
:show => show repl current code (optionally depends on rustfmt to format output)
:add cargo-edit
arguments
:type \:type vec!(5)
:time \:time 5+4
:time my_fun(arg1,arg2)
:time_release \time
command but with release mode
:load => load a rust file into the repl
:reload => reload the last specified file
:pop => remove last repl code line
:del
:edit [editor] => edit internal buffer using an external editor, example: :edit micro
. If no editor is specified then the one from the EDITOR environment variable is used (if set). Note some gui terminal requires using :sync
command after the edit (vscode)
:sync sync the changes written after using :edit with a gui editor (vscode) to the repl
:cd => change current working directory
:color \:color function red
:color macro #ff12ab
:color reset
:toolchain \stable
, beta
, nighty
, default
:checkstatements *true*/*false* => If its set to true, irust will check each statemnt (input that ends with ;) with cargocheck before inserting it to the repl
:bench => run cargo bench
:asm \
:executor \sync
tokio
async_std
, by using an async executor, await
becomes usable with no other modifications (requires cargo-edit for async executors)
:evaluator \:evaluator println!("{}",{$$})
the $$
will be replaced by IRust by the input code (the default evaluator uses debug formatting). To reset the evaluator to default you can use :evaluator reset
:scripts: => if invoked with no arguments it prints a list of detected scripts, if invoked with on argument it print that script info if it exits, if invoked with 2 arguments, it tries to activate/deactivate a script, example: :scripts Vim deactivate
:compile_time \
:main_result \Unit
and Result
(which is Result\<(), BoxResult
as type allows to use ?
in the repl without any boilerplate
:dbg \:dbg fact(12)
, The debugger can be specified in the config file
:exit | :quit => Exit IRust immediately
:: => run a shell command, example ::ls
You can use arrow keys to cycle through commands history
ctrl-l clear screen
ctrl-c clear line
ctrl-d exit if buffer is empty
ctrl-z [unix only] send IRust to the background
ctrl-r search history, hitting ctrl-r again continues searching the history backward, hitting ctrl-s searches the history forward
ctrl-left/right jump through words
HOME/END go to line start / line end
Tab/ShiftTab cycle through auto-completion suggestions (requires racer)
Alt-Enter add line break
ctrl-e force evaluation
ctrl-o->[+-]key Start recording a macro and saved on the specified key, if ctrl-o is clicked again the recording is stopped
ctrl-p->key Play a macro saved on the specified key
ctrl-u Undo
ctrl-y Redo
ctrl-x Delete current line
--help prints help message
--reset-config reset IRust configuration to default
IRust config file is located in:
Linux: /home/$USER/.config/irust/config
Win: C:\Users\$USER\AppData\Roaming/irust/config
Mac: /Users/$USER/Library/Preferences/irust/config
default config: ``` # history addirustcmdtohistory = true addshellcmdtohistory = false
# colors okcolor = "Blue" evalcolor = "White" irustcolor = "DarkBlue" irustwarncolor = "Cyan" outcolor = "Red" shellcolor = "DarkYellow" errcolor = "DarkRed" inputcolor = "Green" insertcolor = "White" welcomemsg = "" welcomecolor = "DarkBlue"
# racer racerinlinesuggestioncolor = "Cyan" racersuggestionstablecolor = "Green" racerselectedsuggestioncolor = "DarkRed" racermaxsuggestions = 5 enableracer = true
# other firstirustrun = false toolchain = "stable" checkstatements = true autoinsert_semicolon = true
// use last output by replacing the specified marker replacemarker = "$out" replaceoutputwithmarker = false
# modify input prmopt inputprompt = "In: " outputprompt = "Out: "
# activate scripting feature activate_scripting = false
# select executor (Sync, Tokio, Asyncstd) executor = "Sync" evaluator = ["println!(\"{:?}\", {\n", "\n});"] compiletime = false mainresult = "Unit" show_warnings = false edition = "E2021" debugger = "LLDB" ```
Since release 0.8.9
IRust
can now parse a theme file located on $config_dir/irust/theme
and use it for the highlighting colors.
Colors can be specified as names ("red") or as hex representation ("#ff12ab").
Default theme file:
keyword = "magenta"
keyword2 = "dark_red"
function = "blue"
type = "cyan"
symbol = "red"
macro = "dark_yellow"
literal = "yellow"
lifetime = "dark_magenta"
comment = "dark_grey"
const = "dark_green"
ident = "white"
IRust supports scripting, all over the code base there are hooks that scripts can react to and usually answer back to IRust with a command.\ Check out SCRIPTS.md for more info.
The IRust Book
is intended to document a couple of tips and tricks https://sigmasd.github.io/irust_book
Automatic releases by github actions are uploaded here https://github.com/sigmaSd/irust/releases
cargo b --release
1- Why is autocompletion not working
-> you need racer installed and configured correctly
cargo +nightly install racer
rustup component add rust-src
2- Racer fails to build
You can try rustup update --force
https://github.com/racer-rust/racer/issues/1141
3- I want to hack on irust but dbg!
overlaps with the output!!
Personaly I do this:
- Run 2 terminals side by side
- run tty
in the first which should output something like /dev/pts/4
- run cargo r 2>/dev/pts4
in the second
Now the dbg!
statements are printed on the second terminal and the output in the first terminal is not messed up.