4 releases
0.1.3 | Sep 23, 2022 |
---|---|
0.1.2 | Nov 6, 2021 |
0.1.1 | Aug 30, 2021 |
0.1.0 | Aug 24, 2021 |
#161 in WebAssembly
1,614 downloads per month
Used in 4 crates
(via openjp2)
28KB
630 lines
sprintf-rs
a clone of C sprintf in Rust
This crate was created out of a desire to provide C printf-style formatting in a WASM program, where there is no libc.
Note: You're probably better off using standard Rust string formatting instead of thie crate unless you specificaly need printf compatibility.
This crate implements a dynamically type-checked function vsprintf
and macro
sprintf!
.
Usage example:
use sprintf::sprintf;
let s = sprintf!("%d + %d = %d\n", 3, 9, 3+9).unwrap();
assert_eq!(s, "3 + 9 = 12\n");
libc
is a dev dependency as it is used in the tests to compare results. std
is used for some maths functions.
lib.rs
:
Libc s(n)printf clone written in Rust, so you can use printf-style formatting without a libc (e.g. in WebAssembly).
Note: You're probably better off using standard Rust string formatting instead of thie crate unless you specificaly need printf compatibility.
It follows the standard C semantics, except:
- Locale-aware UNIX extensions (
'
and GNU’sI
) are not supported. %a
/%A
(hexadecimal floating point) are currently not implemented.- Length modifiers (
h
,l
, etc.) are checked, but ignored. The passed type is used instead.
Usage example:
use sprintf::sprintf;
let s = sprintf!("%d + %d = %d\n", 3, 9, 3+9).unwrap();
assert_eq!(s, "3 + 9 = 12\n");
The types of the arguments are checked at runtime.