10 unstable releases (3 breaking)
new 0.4.0 | Dec 5, 2024 |
---|---|
0.3.1 | Jul 14, 2024 |
0.3.0 | May 31, 2024 |
0.2.1 | Feb 12, 2024 |
0.1.1 | Aug 30, 2021 |
#63 in WebAssembly
19,079 downloads per month
Used in 11 crates
(4 directly)
32KB
710 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 this 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.
Dependencies
~210–650KB
~15K SLoC