Expand description
This crate contains basic niceties for writing no_std
modules for WASI. wasi-print provides:
- An
abort()function that raises a WASI exception. - A
panic_handlerthat aborts after trying to print panic information. - A
print_fd()function that prints an&strto a WASIfd. - Printing macros
print!(),println!(),!eprint()and!eprintln().
§Example
This is a full standalone Rust WASM program using
wasi_print.
ⓘ
#![no_std]
use wasi_print::*;
#[no_mangle]
pub extern "C" fn math_add(x: i32, y: i32) -> i32 {
eprint!("guest running math_add({}, {}) …", x, y);
let result = x + y;
eprintln!(" and returning {}", result);
result
}§Features
print: Include printing code. This requires nightly for a variety of reasons.panic_handler: Provide a panic handler.
§Acknowledgments
Figuring out how to write this was made much easier by this excellent blog post by “James [Undefined]”.
§License
This work is licensed under the “MIT License”. Please see the file
LICENSE.txt in this distribution for license terms.
Macros§
- eprint
print - Print to stdio without a trailing newline.
- eprintln
print - Print to stdio with a trailing newline.
- format
print - Creates a
Stringusing interpolation of runtime expressions. - print
print - Print to stdio without a trailing newline.
- println
print - Print to stdio with a trailing newline.
Functions§
- abort
- Attempt to terminate the current execution by raising a
WASI
ABRTexception. This function should not return: if it does, it will return an error indicating why it failed to terminate. - panic_
handler panic-handler - Handle a
panic()in a WASI-compatible way. - print_
fd print - Print the text of
sto the WASI file descriptorfd.