diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-05-03 01:30:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-02 19:30:03 -0400 |
commit | ea917384feb1c800438d13dddac9ee977d2c47fe (patch) | |
tree | e3d5069ac4f96713c98519853cfe25e93c32f883 /core/ops_builtin.rs | |
parent | c9ac851b9005e5a1e90016e52b3a10dd1f1012b7 (diff) |
refactor(core): convert core.print() to a builtin op (#10436)
Diffstat (limited to 'core/ops_builtin.rs')
-rw-r--r-- | core/ops_builtin.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/core/ops_builtin.rs b/core/ops_builtin.rs index 96aca5c53..546d9cf32 100644 --- a/core/ops_builtin.rs +++ b/core/ops_builtin.rs @@ -7,6 +7,7 @@ use crate::resources::ResourceId; use crate::Extension; use crate::OpState; use crate::ZeroCopyBuf; +use std::io::{stdout, Write}; pub(crate) fn init_builtins() -> Extension { Extension::builder() @@ -17,6 +18,7 @@ pub(crate) fn init_builtins() -> Extension { )) .ops(vec![ ("op_close", op_sync(op_close)), + ("op_print", op_sync(op_print)), ("op_resources", op_sync(op_resources)), ]) .build() @@ -52,3 +54,20 @@ pub fn op_close( Ok(()) } + +/// Builtin utility to print to stdout/stderr +pub fn op_print( + _state: &mut OpState, + args: (String, bool), + _zero_copy: Option<ZeroCopyBuf>, +) -> Result<(), AnyError> { + let (msg, is_err) = args; + if is_err { + eprint!("{}", msg); + stdout().flush().unwrap(); + } else { + print!("{}", msg); + stdout().flush().unwrap(); + } + Ok(()) +} |