Skip to main content

std_native_table

Function std_native_table 

Source
pub fn std_native_table() -> Arc<NativeTable> 
Expand description

Default FFI table with StdoutSink. Prefer std_native_table_with in embedders that must not touch stdout.

Examples found in repository?
examples/ping_pong.rs (line 13)
9fn main() {
10    let chunk = samples::ping_pong();
11    let rt = match Runtime::with_natives_and_config(
12        chunk,
13        std_native_table(),
14        RuntimeConfig {
15            workers: 1,
16            quantum: 10_000,
17            mailbox: byteflow::MailboxConfig::DEFAULT,
18            ..Default::default()
19        },
20    ) {
21        Ok(rt) => rt,
22        Err(e) => {
23            eprintln!("runtime: {e}");
24            std::process::exit(1);
25        }
26    };
27    let Some(main) = rt.function_index("main") else {
28        eprintln!("missing main");
29        std::process::exit(1);
30    };
31    let handle = match rt.spawn(main, &[]) {
32        Ok(h) => h,
33        Err(e) => {
34            eprintln!("spawn: {e}");
35            std::process::exit(1);
36        }
37    };
38    let outcome = handle.join();
39    let metrics = rt.metrics();
40    rt.shutdown();
41
42    match outcome {
43        FlowOutcome::Completed(Value::Int(2)) => {
44            println!("pong replied 2 (Atomic Hop)");
45            println!("{metrics}");
46        }
47        other => {
48            eprintln!("unexpected {other:?}");
49            std::process::exit(1);
50        }
51    }
52}
More examples
Hide additional examples
examples/atomic_actors.rs (line 25)
21fn main() {
22    let chunk = samples::atomic_request_reply();
23    let rt = match Runtime::with_natives_and_config(
24        chunk,
25        std_native_table(),
26        RuntimeConfig {
27            workers: 2,
28            quantum: 10_000,
29            mailbox: byteflow::MailboxConfig::DEFAULT,
30            ..Default::default()
31        },
32    ) {
33        Ok(rt) => rt,
34        Err(e) => {
35            eprintln!("runtime: {e}");
36            std::process::exit(1);
37        }
38    };
39    let Some(main) = rt.function_index("main") else {
40        eprintln!("missing main");
41        std::process::exit(1);
42    };
43    let handle = match rt.spawn(main, &[]) {
44        Ok(h) => h,
45        Err(e) => {
46            eprintln!("spawn: {e}");
47            std::process::exit(1);
48        }
49    };
50    let outcome = handle.join();
51    let metrics = rt.metrics();
52    rt.shutdown();
53
54    match outcome {
55        FlowOutcome::Completed(Value::Int(42)) => {
56            println!("atomic request-reply ok: payload=42");
57            println!("{metrics}");
58        }
59        other => {
60            eprintln!("unexpected {other:?}");
61            std::process::exit(1);
62        }
63    }
64}