跳到主要内容

可执行代码块(API Playground)

带 run 标记的代码块可以在浏览器里直接运行,结果内联展示在本页。无需任何后端——JavaScript 在页面内执行,Rust 代码通过 Rust Playground 公开 API 编译运行。

网络依赖

运行需要浏览器能访问目标 API。Rust Playground 与 GitHub API 在中国大陆偶尔超时,失败时错误面板会给出排查提示,稍后重试即可。

运行 Rust​

点下面的「运行」按钮,代码会被发送到 Rust Playground 编译执行,展示程序 stdout 与 cargo 编译日志(stderr):

fn main() {
let pins = ["GPIO1_A0", "GPIO1_A1", "I2C1_SDA", "I2C1_SCL"];
for (i, pin) in pins.iter().enumerate() {
println!("pin {i}: {pin}");
}
let sum: u32 = (1..=100).sum();
println!("1+2+...+100 = {sum}");
}
Rust · stable/2024

编译错误不是"请求失败"——正常运行并展示 stderr 里的错误信息:

fn main() {
let x: u32 = "not a number";
println!("{x}");
}
Rust · stable/2024

通过 metastring 覆盖编译选项(edition / channel / mode):

fn main() {
// 2021 edition 与 2024 行为一致的简单示例
let v = vec![1, 2, 3];
let total: i32 = v.iter().sum();
println!("total = {total}");
}
Rust · stable/2021

运行 JavaScript​

js run 块在页面内执行,支持顶层 await,fetch 与 console 输出都会被捕获展示:

const res = await fetch('https://api.github.com/repos/facebook/docusaurus');
const repo = await res.json();
console.log('stars:', repo.stargazers_count);
console.log('topics:', repo.topics);
JavaScript

发送 POST 请求:

const res = await fetch('https://jsonplaceholder.typicode.com/posts', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({title: 'hello', body: 'from browser', userId: 1}),
});
console.log('status:', res.status);
console.log(await res.json());
JavaScript

作者指南​

标记语法​

写法效果
```js run页面内执行 JS(new Function,支持顶层 await)
```rust run提交 Rust Playground 编译运行
```rust run edition=2024 channel=stable mode=release覆盖 Playground 选项(默认 stable/debug/2024)

限制​

  • CORS:JS 路径要求目标 API 允许跨域(Access-Control-Allow-Origin),否则浏览器拦截——错误面板有提示。
  • 超时:单请求 15s,JS 整体 30s,Rust(含编译)60s。
  • 本地缓存:运行成功的结果缓存在浏览器 localStorage(7 天,最多 100 条),命中缓存不再发请求——代码或选项一变,缓存键自动失效。面板上「重新运行」可绕过缓存强制执行。
  • Rust Playground 是第三方免费服务(无 SLA,偶发限流),只提供 bin crate 单文件编译运行,无法访问网络与本地设备。
  • CSP:js run 依赖 unsafe-eval;若未来站点启用严格 CSP,JS 路径会失效(rust 不受影响)。