Skip to content

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