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),
cache: 'no-cache',
credentials: 'same-origin',
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',
mode: 'cors',
redirect: 'follow',
referrer: 'no-referrer',
});
const answer = await resp.json();
let message = '';
if (answer.error != null) {
message = answer.error;
} else {
message = answer.result
}
output.value = message;
console.log(answer)
} catch (err) {
output.value = `Internal Error Message: ${err}`;
}
};
return 'Setup Rust Environment Succeed';
}