Skip to content

Konfigurasi Rust ​

Halaman ini menyediakan referensi komprehensif untuk semua opsi konfigurasi, batasan, dan kontrol keamanan yang tersedia saat menginisialisasi instance LightVM.

Contoh Konfigurasi Lengkap ​

Contoh berikut mendemonstrasikan cara mengonfigurasi semua batas, bendera keamanan, dan opsi error yang tersedia menggunakan pola builder maupun object.

rs
use lightvm::LightVM;
use lightvm::types::{vmconfig::VmConfig, capability::Capability, time_budget::TimeBudget};

fn main() {
  let mut vm = LightVM::new(VmConfig {
    caps: vec![Capability::Control, Capability::Observe],
    ..Default::default()
  })
  .set_max_io(100)
  .set_max_import(3)
  .set_max_alloc(50)
  .set_max_call(200)
  .set_max_jump(100)
  .set_max_ticks(1_000_000)
  .set_max_stack_size(128)
  .set_allowed_imports(vec!["math".into(), "time".into(), "utils".into()])
  .set_time_budget(TimeBudget::Cheap)
  .with_unsafe_mode(false)
  .with_nightly(false)
  .with_backtrace(false)
  .with_explain(false)
  .with_hint(true)
  .with_diagnostic_links(false);
}
rs
use lightvm::LightVM;
use lightvm::types::{
  vmconfig::VmConfig,
  runtime_config::RuntimeConfig,
  error_options::ErrorOptions,
  security_config::SecurityConfig,
  capability::Capability,
  time_budget::TimeBudget
};

fn main() {
  let mut vm = LightVM::new(VmConfig {
    caps: vec![Capability::Control, Capability::Observe],
    runtime_config: Some(RuntimeConfig {
      nightly: false
    }),
    error_options: Some(ErrorOptions {
      backtrace: false,
      explain: false,
      hint: true,
      diagnostic_links: false
    }),
    security_config: Some(SecurityConfig {
      max_io: 100,
      max_import: 3,
      max_alloc: 50,
      max_call: 200,
      max_jump: 100,
      max_ticks: 1_000_000,
      max_stack_size: 128,
      allowed_imports: vec!["math".into(), "time".into(), "utils".into()],
      time_budget: TimeBudget::Cheap,
      unsafe_mode: false
    })
  });
}

Rincian Opsi Konfigurasi ​

Method / PropertiTipeDefaultDeskripsi
capsVec<Capability>vec![] (memberikan Capability::Observe)Menentukan kapabilitas aktif yang diberikan ke virtual machine.
set_max_io / max_iousize100Jumlah maksimum operasi I/O yang diizinkan selama eksekusi.
set_max_import / max_importusize3Jumlah maksimum impor modul yang diizinkan.
set_max_alloc / max_allocusize50Jumlah maksimum alokasi memori yang diizinkan.
set_max_call / max_callusize200Jumlah maksimum pemanggilan fungsi bersarang yang diizinkan.
set_max_jump / max_jumpusize100Jumlah maksimum lompatan control flow yang diizinkan.
set_max_ticks / max_ticksu641_000_000Jumlah maksimum tick eksekusi sebelum berhenti untuk mencegah infinite loop.
set_max_stack_size / max_stack_sizeusize128Jumlah maksimum item yang dapat ditampung oleh evaluation stack.
set_allowed_imports / allowed_importsVec<String>vec!["math".into(), "time".into(), "utils".into()]Daftar putih nama modul yang diizinkan untuk diimpor.
set_time_budget / time_budgetTimeBudgetTimeBudget::CheapMenetapkan batas tingkatan anggaran waktu eksekusi.
with_unsafe_mode / unsafe_modeboolfalseMengaktifkan atau menonaktifkan operasi tingkat sistem yang tidak aman (unsafe).
with_nightly / nightlyboolfalseMengizinkan penggunaan fitur nightly eksperimental.
with_backtrace / backtraceboolfalseMenampilkan detail backtrace internal dalam pesan error.
with_explain / explainboolfalseMenampilkan petunjuk penjelasan yang lebih rinci dalam pesan error.
with_hint / hintbooltrueMenampilkan petunjuk penggunaan umum pada pesan error.
with_diagnostic_links / diagnostic_linksbooltrueMenyertakan tautan metadata yang mengarah ke dokumentasi kode error.

Dokumentasi Terkait

Perlu memeriksa kode error individual yang disebutkan dalam pesan error? Kunjungi Referensi Kode Error.