< 返回版块

SidneyLYZhang 发表于 2021-05-20 18:05

Tags:Rust-Playground,jupyter-rust,cargo-play

Play with Rust easily - 轻松玩转Rust

Tranlated from Play with Rust easily

Author : Wilfried Kopp aka. Chevdor

Translator: SidneyZhang

keyGraph

[TOC]

0. 译者前言

本来呢,我就是想找找怎么更好的、便利的学习和使用Rust,很多都是从 cargo new 开始教学,刚接触的时候没觉得这有什么问题,但时间久了,就有点累了,尤其是需要学习基础内容、尝试小段代码或者画个图的时候,就有点纠结了,每次编译虽然不慢,却也要辗转多处……然后想起了官网的rust Playground的网页,学习语法的时候倒是有点解脱的感觉,但也没有完全解决我的需求,毕竟不能很方便的保存结果,也不适合做一些复杂点儿的数据分析。

踌躇间,就看到了这篇Blog,了解了以前没有那么了解的方式,觉得不错啊,感激原作者的耐心,介绍了这么多简单的途径,确实很值得让更多人了解一下,所以有了这个翻译。

仓促翻译,多有不完善的地方,还望大家海涵,帮忙指正。

以下为翻译:

1. 介绍

不像解释性语言,Rust 源码需要编译后才能使用。一般还需要满足依赖,也就是Rust包管理器“Cargo”发挥作用的地方。这种方式本身就能很好的运转,但是,有些时候,当你想不去建立新的文件夹、保护区建立新的仓库和也不去编写cargo.toml文件,还想尝试一下Rust的时候,就不那么理想了……

就像,你可能正在学习或者尝试一些小项目。你也可能正在处理一个大项目,在深入处理之前,你可能希望先小范围试验一下,或者,你可能只是因为Rust语法漂亮、健壮,而且便于使用,所以想简单的在某处使用一下。

通过这篇文章,你可以了解到这样几种便利的方法,来实现边运行Rust代码边输出结果的方式。

You like or want to learn more about @rustlang and get started quickly? Some alternate ways to play from your browser using @ProjectJupyter (new @docker image) or directly from VSCode. https://t.co/ITVg5Qwdl4#Rust #Programming

你是否喜欢或者想学更多关于 @rustlang 的知识并且可以快速开始?一些替代的方法,比如在你的浏览器上使用 @ProjectJupyter (最新的 @docker 镜像)或者直接使用VSCode。https://t.co/ITVg5Qwdl4#Rust #Programming

— Chevdor (@chevdor) January 17, 2021

2. Rust Playground

如果你正在学习Rust,那你一定已经听说了这个Playground。你可以从Rust官方网页(LINK)找到这个Rust Playground。它可以在你的浏览器里运行,甚至不需要你提前安装任何东西。

The online Rust Playground

事实上Rust Playground有以下很棒的特点:

  • 相当不错的可定制的编辑器(包括主题、快捷键、等等等等……)
  • 语法高亮
  • 展示编译错误
  • 可以在线共享你的代码(为你在GitHub上建立一个节点)

当Playground显示出编译结果的时候,你可能一开始会对你所遇到的问题感到疑惑。这就是共享代码可以发挥作用的时候了:通过代码共享可以允许其他人查看你的代码并提出改进的建议。

编译输出示例

如果你可以解决上图这个(琐碎的)问题,你就打开示例代码(LINK)并尝试一下。

3. Jupyter

如果你和研究人员或者是使用Python的人一起工作,那你一定已经了解了Jupyter 。Jupyter提供了在线体验,所以有一次你不再需要在本地安装任何内容。

Jupyter允许你在一个所谓的记事本(Notebooks)混合书写代码和Markdown文本。在那也允许你实际运营这些代码,尝试编译这些代码。

Jupyter中的notebook列表

由于Rust更好的源码性能,在Jupyter里Rust也十分耀人。它是一个非常好的触点,可以通过图表更好的展示你的代码:

使用Rust在Jupyter中绘制图表

Jupyter支持作为标准内核的Python,同时他也非常欢迎添加其他的内核。evcxr 项目就可以把Rust引入Jupyter之中。

Jupyter中的Rust内核

若果你阅读过我其他的文章,就会知道我喜欢使用Docker。其中一个原因就是它可以很好地帮助我保持我电脑内的整洁。通过它可以很方便的得到一个Docker镜像,这个镜像可以直接使用,而不必摆弄、安装、更新以及改变任何已安装在自己本地机器上的工具链。

不幸的是,我没找到任何一个运行良好的Docker镜像,并且包含现成的Jupyter与Rust环境……所以,我做了一个。

首先,你要在你的系统中安装好Docker,然后你就可以按照如下方式尝试使用Jupyter-Rust镜像了:

docker run --rm -it -p 8888:8888 chevdor/jupyter-rust

运行后会输出以下内容:

$ docker run --rm -it -p 8888:8888 chevdor/jupyter-rust
Setting theme to monokai
[I 09:12:54.187 NotebookApp] Writing notebook server cookie secret to /home/jupyter/.local/share/jupyter/runtime/notebook_cookie_secret
[I 09:12:55.617 NotebookApp] Serving notebooks from local directory: /notebooks
[I 09:12:55.617 NotebookApp] The Jupyter Notebook is running at:
[I 09:12:55.617 NotebookApp] http://localhost:8888/?token=5f27ea34b2088c0a494799061a25bd254d4cdbb38f9739d8
[I 09:12:55.617 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 09:12:55.639 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///home/jupyter/.local/share/jupyter/runtime/nbserver-14-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=5f27ea34b2088c0a494799061a25bd254d4cdbb38f9739d8

现在你就可以抓取这个链接(包含Token)然后再你的浏览器中打开了。你将得到一个漂亮而且舒适的暗黑(Dark)主题:

主题展示

不要害怕,如果你喜欢明快的主题,仍然有其他选择,比如下面这些:

  • chesterish
  • grade3
  • gruvboxd
  • gruvboxl
  • monokai
  • oceans16
  • onedork
  • solarizedd
  • solarizedl

这些主题,例如,可以直接使用某个你喜欢的主题直接登录 :)

docker run --rm -it -e THEME=grade3 -p 8888:8888 chevdor/jupyter-rust

grade3主题样式

你可以很快看到 如何在Notebook中引入Rust外部包(crates),我也在里面预置了一些简单的实例:

实例

总之,如果你更偏向学术方面的工作,你可能已经很了解Jupyter了,并可能也会发现,Rust内核所开辟的新的可能性。

4. Cargo Play

之前的方法可以帮助你在你的浏览器中编译和运行Rust代码(至少很明显……)。Jupyter笔记本的方法可以帮助你在自己机器上运行你的代码(虽然你也可以在本地安装Rust Playground)。但是,有的时候你还是可能希望待在当前的开发环境中,而不是开启更多的页面(或者“标签栏”/Tab)。

这时用 Cargo-Play 就会变得特别方便,尤其是如果你使用VSCode再配合上 VSCode插件

不像Jupyter,Cargo-Play需要你写一个简单的 main() 函数,就像这样:

fn main() {
    println!("Say Hi !");
}

Cargo Play

5. 总结下

到这里,我们已经看到了三种方式,允许你在相对没那么多负担也不建立Cargo项目的前提下尝试Rust代码。其中两个方法可以很好的在你的浏览器中运行,可以帮助你在家、在实验室或者在公司处理你的实例代码。最后,剩下的那个方式,非常便捷的,可以帮助你在一个舒适的编译环境中增加本地Rust快速运行的能力。

如果你喜欢这篇文章的内容,就把它转发给更多的人,还可以让更多人收益。


Ext Link: https://www.chevdor.com/post/2021/01/play-rust/

评论区

写评论
Ryan Li 2021-05-21 08:00

谢谢分享,非常棒的文章!

Mike Tang 2021-05-20 22:31

感谢辛苦的工作!

1 共 2 条评论, 1 页