`unfmt`: A compile-time pattern matching library that reverses the interpolation process of `format!`. - eviltoast
  • livingcoder@programming.dev
    link
    fedilink
    arrow-up
    12
    ·
    7 months ago

    How does it handle multiple potential outcomes? Example: unformat!("a {} b {} c", "a x b b y c") Would it return Some(("x b", "y")) or Some(("x", "b y"))?

  • voklen@programming.dev
    link
    fedilink
    arrow-up
    9
    ·
    edit-2
    7 months ago

    I love the concept! I recently wanted something just like this for a Flutter app I was making to parse a filename into a user defined format i.e.

    2024-04-12.txt with %Y-%M-%D.txt to {year: 2024, month: 04, day: 12}

    I’ll certainty be using this the next time I need anything like that in Rust though.

    • fhoekstra@programming.dev
      link
      fedilink
      arrow-up
      7
      ·
      7 months ago

      Off-topic, but I recognise your name. Thank you for the Daily Diary App! I’m a huge fan, I use it every day for my gratitude routine.

      • voklen@programming.dev
        link
        fedilink
        arrow-up
        4
        ·
        7 months ago

        Wow, I’ve never had anyone recognise my name for something I’ve made! Thank you so much and I’m glad you’re enjoying it 😁

    • Ephera@lemmy.ml
      link
      fedilink
      arrow-up
      21
      ·
      edit-2
      7 months ago

      You must’ve read that wrong.

      The first example, but formatted differently:

      let value = "My name is Rho.";
      let result = unformat!("My {} is {}.", value);
      

      Now, result contains:

      Some(("name", "Rho"))
      

      …because the words “name” and “Rho” in value happened to be at the position of the {}-slots in the unformat!()-pattern.