221 个版本 (112 个稳定版本)

1.71.23 2024年5月28日
1.71.21 2024年3月24日
1.71.19 2023年12月14日
1.71.15 2023年11月5日
0.6.10 2019年7月31日

开发工具 中排名 47

Download history 250/week @ 2024-04-29 198/week @ 2024-05-06 63/week @ 2024-05-13 78/week @ 2024-05-20 336/week @ 2024-05-27 96/week @ 2024-06-03 72/week @ 2024-06-10 51/week @ 2024-06-17 25/week @ 2024-06-24 95/week @ 2024-07-01 29/week @ 2024-07-08 14/week @ 2024-07-15 19/week @ 2024-07-22 28/week @ 2024-07-29 16/week @ 2024-08-05 22/week @ 2024-08-12

每月下载量 85

MIT 许可证

310KB
7K SLoC

IRust

跨平台 Rust Repl

您可以通过访问 https://gitpod.io/#https://github.com/sigmaSd/IRust 在不安装或设置的情况下尝试 IRust

关键词 / 小技巧

:help => 打印帮助信息,使用 :help full 查看完整版本

:reset => 重置 Repl

:show => 显示 Repl 当前代码(可选,取决于 rustfmt 格式化输出)

:add <dep_list> => 添加依赖项,也接受大多数 cargo add 参数,例如您可以使用 :add --path path_to_crate 导入本地依赖项

:type <expression> => 显示表达式类型,例如 :type vec!(5)

:time <expression> => 返回表达式执行所需的时间。例如::time 5+4 :time my_fun(arg1,arg2)

:time_release <expression> => 与 time 命令相同,但使用发布模式

:load => 将 Rust 文件加载到 Repl 中

:reload => 重新加载最后指定的文件

:pop => 删除 Repl 中的最后一行代码

:del <line_num> => 从 Repl 代码中删除特定行(行数从第一个表达式语句开始计数为 1)

:edit [编辑器] => 使用外部编辑器编辑内部缓冲区,例如::edit micro。如果没有指定编辑器,则使用从 EDITOR 环境变量中指定的编辑器(如果设置了)。注意,一些 GUI 终端需要在编辑后使用 :sync 命令(vscode)。

:sync 将使用 :edit 和 GUI 编辑器(vscode)写入的更改同步到 repl。

:cd => 改变当前工作目录

:color <键> <值> => 在运行时更改令牌高亮颜色,有关令牌列表和值表示的详细信息,请查看主题部分,例如::color function red :color #ff12ab :color reset

:toolchain <值> => 在工具链之间切换,支持的值有:stablebetanightlydefault

:theme <值> => 如果没有使用参数,列出当前安装的主题;否则将 irust 设置为给定的主题,有关更多信息,请参阅主题部分

:check_statements true/false => 如果设置为 true,irust 将在将其插入到 repl 之前使用 cargo_check 检查每个语句(以分号结束的输入)

:bench => 运行 cargo bench

:asm <函数> => 显示指定函数的汇编代码,注意该函数必须是公共的,并且不能有独立语句/表达式(需要 cargo-show-asm

:executor <executor> => 设置 IRust 使用的执行器,可用选项为:synctokioasync_std,使用异步执行器时,await 可用于异步执行器,无需其他修改

:evaluator <评估器> => 设置评估器语句,例如::evaluator println!("{}",{$$}) 等号右边的 $$ 将由 IRust 替换为输入代码(默认评估器使用调试格式化)。要重置评估器为默认值,可以使用 :evaluator reset

:scripts: => 如果没有参数调用,则打印检测到的脚本列表;如果有参数调用,则打印该脚本信息(如果存在),如果有两个参数,则尝试激活/禁用脚本,例如::scripts Vim deactivate

:compile_time <开启/关闭> => 如果设置为开启,IRust 将在每个输入时打印编译时间,编译时间包括 rustc 编译和一些 IRust 代码(应该是微不足道的)

:compile_mode <调试/发布> => 设置 cargo 如何在发布或调试模式下编译代码

:main_result <值> => 更改主结果类型,可用选项有 UnitResult(即 Result<(), Box<dyn std::error::Error>>),使用 Result 作为类型允许在 repl 中使用 ? 而无需任何样板代码

:dbg <表达式> => 使用(可选的表达式)启动 rust-lldb/rust-gdb,例如::dbg:dbg fact(12),调试器可以在配置文件中指定。

:expand [函数] => 显示宏展开的结果,需要 https://github.com/dtolnay/cargo-expand,函数是可选的,例如 fn b,然后 :expand b

:exit | :quit => 立即退出 IRust

$$ => 可以使用 $$ 将 shell 命令与 rust 代码混合,例如:let a = $$ls -l$$;,此功能可以通过配置文件 en/dis 禁用。

:: => 运行 shell 命令,例如:::ls

可以使用箭头键循环查看命令历史。

可以通过设置环境变量 NO_COLOR 来禁用所有颜色。

要在 rust-analyzer 中启用通过 tab 完成功能,请在配置中将 enable_rust_analyzer 设置为 true。

快捷键

ctrl-l 清屏

ctrl-c 清除行

ctrl-d 如果缓冲区为空则退出

ctrl-z [仅限 unix] 将 IRust 发送到后台

ctrl-r 搜索历史,再次按 ctrl-r 继续向前搜索历史,按 ctrl-s 向后搜索历史

ctrl-left/right 跳转到单词的开始/结束

HOME/END 跳转到行的开始/结束

Tab/ShiftTab 在完成建议之间循环

Alt-Enter | ctrl-s 添加换行符

ctrl-e 强制求值

ctrl-o->[+-]键 开始录制宏并保存到指定的键,如果再次点击 ctrl-o 则停止录制

ctrl-p-> 播放保存在指定键上的宏

ctrl-u 撤销

ctrl-y 重做

ctrl-x 删除当前行

Cli 命令

--help 打印帮助信息

--reset-config 将 IRust 配置重置为默认值

如果输入被管道传输到 IRust,则将其求值并退出,例如:echo '"hello".chars()' | irust

配置

IRust 配置文件位于

Linux: /home/$USER/.config/irust/config.toml

Win: C:\Users\$USER\AppData\Roaming\irust/config.toml

Mac: /Users/$USER/Library/Preferences/irust/config.toml

默认配置

  # history
  add_irust_cmd_to_history = true
  add_shell_cmd_to_history = false

  # colors
  ok_color = "Blue"
  eval_color = "White"
  irust_color = "DarkBlue"
  irust_warn_color = "Cyan"
  out_color = "Red"
  shell_color = "DarkYellow"
  err_color = "DarkRed"
  input_color = "Green"
  insert_color = "White"
  welcome_msg = ""
  welcome_color = "DarkBlue"

  # Rust analyzer
  ra_inline_suggestion_color = "Cyan"
  ra_suggestions_table_color = "Green"
  ra_selected_suggestion_color = "DarkRed"
  ra_max_suggestions = 5
  enable_rust_analyzer = false

  # other
  first_irust_run = false
  toolchain = "stable"
  check_statements = true
  auto_insert_semicolon = true
  
  #use last output by replacing the specified marker
  replace_marker = "$out"
  replace_output_with_marker = false
  
  # modify input prmopt
  input_prompt = "In: "
  output_prompt = "Out: "
  
  # activate scripting feature
  activate_scripting = false
  
  # select executor (Sync, Tokio, Asyncstd)
  executor = "Sync"
  evaluator = ["println!(\"{:?}\", {\n", "\n});"]
  compile_time = false
  main_result = "Unit"
  show_warnings = false
  edition = "E2021"
  debugger = "LLDB"
  shell_interpolate = true
  local_server = false
  local_server_adress = "127.0.0.1:9000"
  theme = "default"

主题

1.66.0 版本起,IRust 现在可以解析位于 $config_dir/irust/themes 下的任何主题文件,并用于高亮显示颜色。

要选择一个主题,请在 irust 配置中设置其名称。例如,要设置 themes/mytheme.toml,请设置 theme = "mytheme"

颜色可以指定为名称(“red”)或十六进制表示(“#ff12ab”)。

默认主题文件(default.toml)

  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 自动在 xdg_data_dir/irust/irust_prelude 创建 irust_prelude 包,该包在启动时导入,对其(标记为 pub)的任何更改在保存后都会立即反映在 repl 上。

脚本

IRust 支持脚本,在整个代码库中都有脚本可以响应的钩子,并且通常用命令回答 IRust。
有关更多信息,请参阅 SCRIPTS.md

Vim 插件

对于 nvim,您可以使用 https://github.com/hkupty/iron.nvim(需要 irust 1.67.4)

旧方法

从版本 1.60.0 开始,IRust 支持通过在配置文件中将 local_server 更改为 true 来启动本地服务器。
这允许它被程序控制,从而允许编写使用此功能的 vim 插件,请参阅 https://github.com/sigmaSd/irust-vim-plugin

Jupyter Notebook

目前有一个易于安装的裸机内核,请参阅 https://github.com/sigmaSd/IRust/blob/master/crates/irust_repl/README.md#jupyter-kernel 了解说明

书籍

The IRust Book旨在记录一些技巧和窍门 https://sigmasd.github.io/irust_book

版本

自动发布的版本由 github actions 上传,请参阅 https://github.com/sigmaSd/irust/releases

安装

  • cargo安装 irust
  • cargo binstall irust(使用 cargo-binstall
  • 还有一个 flaptak 软件包,它是自包含的,但有一些限制

Get it from FlatHub

构建

cargo b --release

它是如何工作的(随机抽取)

irust

常见问题解答

1- 我想修改 irust,但 dbg! 与输出冲突!

我个人这样做

  • 运行两个并排的终端
  • 在第一个中运行 tty,应该输出类似于 /dev/pts/4 的内容
  • 在第二个中运行 cargo r 2>/dev/pts4

现在,dbg! 语句将在第二个终端中打印,第一个终端中的输出不会混乱。

变更日志

依赖项

~3–14MB
~121K SLoC