Metode Provide
Setelah mendefinisikan fungsi atau logika Anda, metode provide digunakan untuk mendaftarkannya ke dalam konteks VM, sehingga dapat diakses selama eksekusi.
Menggunakan TypeScript
Untuk TypeScript, Anda dapat menyediakan fungsi atau struktur data langsung ke dalam konteks VM. Pastikan tipe yang disediakan sesuai dengan antarmuka yang diharapkan dari instance LightVM.
ts
import { Capability, LightVM } from 'lightvm';
const vm = new LightVM({ caps: [Capability.Control] });
const tools = vm.tools();
vm.provide({
name: 'John Doe',
force: 2021,
});
const raw = [['get', 'name'], ['println'], ['get', 'force'], ['println']];
const optimized = tools.optimizeBytecode(raw);
vm.load(optimized).run();Menggunakan Rust
Dalam Rust, Anda dapat menyediakan logika Anda menggunakan representasi string mentah atau dengan memanfaatkan serde_json untuk struktur data yang lebih kompleks. Hal ini memungkinkan VM untuk mengintegrasikan logika yang didefinisikan Rust secara mulus.
rust
use lightvm::LightVM;
use lightvm::types::{capability::Capability, vmconfig::VmConfig};
fn main() {
let mut vm = LightVM::new(VmConfig {
caps: vec![Capability::Control],
..Default::default()
});
let tools = vm.tools();
vm.provide(serde_json::json!({
"name": "John Doe",
"force": 2021
}));
let raw = r#"[
["get", "name"],
["println"],
["get", "force"],
["println"]
]"#;
let optimized = tools.optimize_bytecode(raw);
vm.load(optimized)
.run(None);
}rust
use lightvm::LightVM;
use lightvm::types::{capability::Capability, vmconfig::VmConfig};
fn main() {
let mut vm = LightVM::new(VmConfig {
caps: vec![Capability::Control],
..Default::default()
});
let tools = vm.tools();
vm.provide(serde_json::json!({
"name": "John Doe",
"force": 2021
}));
let raw = serde_json::json!([
["get", "name"],
["println"],
["get", "force"],
["println"]
]);
let optimized = tools.optimize_bytecode(raw);
vm.load(optimized)
.run(None);
}INFO
Kapabilitas yang Dibutuhkan: Control