Published
Edited
Apr 8, 2021
3 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
setupRust = () => {
const run = document.getElementById('rust-run');
const output = document.getElementById('rust-out');
require("ace/ext-language_tools.js")
ace.require("ace/ext/language_tools");
const editor = ace.edit('rust-code');
editor.setOptions({
enableBasicAutocompletion: true
});
editor.setValue(`fn main() {
println!("Hello, world!");
}`);
editor.setTheme('ace/theme/monokai');
editor.session.setMode('ace/mode/rust');

run.onclick = async () => {
const code = editor.getValue();

if (!code) {
return;
}

const data = {
version: 'stable',
optimize: '0',
code:code,
edition:'2015',
}
try {
const resp = await fetch('https://play.rust-lang.org/evaluate.json',{
body: JSON.stringify(data), // must match 'Content-Type' header
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, same-origin, *omit
headers: {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.68',
'Content-type': 'application/json',
'Sec-Fetch-Site': 'same-site',
},
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, cors, *same-origin
redirect: 'follow', // manual, *follow, error
referrer: 'no-referrer', // *client, no-referrer
});

const answer = await resp.json();

let message = '';
if (answer.error != null) {
message = answer.error;
} else {
message = answer.result
// answer.Events.forEach(e => {
// if (e.Kind == 'stdout') {
// message += e.Message;
// }
// });
}

output.value = message;
console.log(answer)
} catch (err) {
output.value = `Internal Error Message: ${err}`;
}
};

return 'Setup Rust Environment Succeed';
}
Insert cell
{
await visibility();

return setupRust();
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more