rune/modules/
disable_io.rs

1//! I/O methods which will cause any output to be ignored.
2//!
3//! # Examples
4//!
5//! ```no_run
6//! use rune::Context;
7//! use rune::modules::disable_io;
8//!
9//! let mut context = rune::Context::with_config(false)?;
10//! context.install(disable_io::module()?)?;
11//! # Ok::<_, rune::ContextError>(())
12//! ```
13
14use crate as rune;
15use crate::runtime::{InstAddress, Memory, Output, VmResult};
16use crate::{ContextError, Module};
17
18/// I/O methods which will cause any output to be ignored.
19#[rune::module(::std::io)]
20pub fn module() -> Result<Module, ContextError> {
21    let mut module = Module::from_meta(self::module_meta)?;
22
23    module.function("print", move |_: &str| {}).build()?;
24    module.function("println", move |_: &str| {}).build()?;
25
26    module
27        .raw_function(
28            "dbg",
29            move |stack: &mut dyn Memory, _: InstAddress, _: usize, out: Output| {
30                vm_try!(out.store(stack, ()));
31                VmResult::Ok(())
32            },
33        )
34        .build()?;
35
36    Ok(module)
37}