safe_format 0.1.5

safe_format! macro works similarly to the built-in format! macro but allows for named parameters and it safely ignores any extra parameters that are not used in format string
Documentation
extern crate safe_format;
use safe_format::safe_format;

#[test]
fn test_safe_format_literal() {
    let result = safe_format!("Hello, {name}!", name = "Alice");
    assert_eq!(result, "Hello, Alice!");
}

#[test]
fn test_safe_format_variable() {
    let pattern = "Greeting from {name}";
    let result = safe_format!(pattern, name = "Allen");
    assert_eq!(result, "Greeting from Allen");
}

#[test]
fn test_safe_format_unused_args() {
    let pattern = "Greeting from {name}";
    let result = safe_format!(pattern, name = "Allen", unused = "Unused");
    assert_eq!(result, "Greeting from Allen");
}

#[test]
fn test_safe_format_multiple_args() {
    let pattern = "{greeting}, {name}!";
    let result = safe_format!(pattern, greeting = "Hello", name = "Bob");
    assert_eq!(result, "Hello, Bob!");
}

#[test]
fn test_safe_format_dynamic_string() {
    let dynamic_pattern = String::from("Welcome, {user}!");
    let result = safe_format!(dynamic_pattern, user = "Charlie");
    assert_eq!(result, "Welcome, Charlie!");
}