Files
fish-shell/crates/printf/README.md
Daniel Rainer 1c654f23af Put local dependencies in crates directory
With an increasing number of local dependencies, the repo root is getting
somewhat bloated. This commit moves the two current local dependencies into the
newly created `crates` directory, with the intention of using it for all future
local dependencies as well.

Some dependencies which are introduced by currently in-progress pull requests
will need modifications in order for relative paths to work correctly.
2025-08-20 10:16:19 +02:00

1.4 KiB

fish-printf

The printf implementation used in fish-shell, based on musl printf.

crates.io

Licensed under the MIT license.

Usage

Run cargo add fish-printf to add this crate to your Cargo.toml file.

Notes

fish-printf attempts to match the C standard for printf. It supports the following features:

  • Locale-specific formatting (decimal point, thousands separator, etc.)
  • Honors the current rounding mode.
  • Supports the %n modifier for counting characters written.

fish-printf does not support positional arguments, such as printf("%2$d", 1, 2).

Prefixes like l or ll are recognized, but only used for validating the format string. The size of integer values is taken from the argument type.

fish-printf can output to an std::fmt::Write object, or return a string.

For reasons related to fish-shell, fish-printf has a feature "widestring" which uses the widestring crate. This is off by default. If enabled, run cargo add widestring to add the widestring crate.

Examples

use fish_printf::sprintf;

// Create a `String` from a format string.
let s = sprintf!("%0.5g", 123456.0) // 1.2346e+05

// Append to an existing string.
let mut s = String::new();
sprintf!(=> &mut s, "%0.5g", 123456.0) // 1.2346e+05

See the crate documentation for additional examples.