• snaggen@programming.devOP
      link
      fedilink
      arrow-up
      0
      ·
      9 months ago

      Well, if the only thing you need from reflection is the name of a type, so then yes. But I wouldn’t really call this reflection since it is very limited.

      • Ephera@lemmy.ml
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        Yeah, Rust can’t have proper reflection, since there’s no external runtime environment that keeps track of your state. Any such smartness either has to be compiled-in (which is how std::any and macros work) or you can implement something to keep track of this state at runtime, as if you were partially building a runtime environment.

        • BatmanAoD@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          9 months ago

          Minor point of clarification: it can’t have runtime reflection, but in principle it could have compile time reflection.

          • anlumo@feddit.de
            link
            fedilink
            English
            arrow-up
            0
            ·
            9 months ago

            No, the Rust Project recently made sure that Rust can’t have compile-time reflection.

              • anlumo@feddit.de
                link
                fedilink
                English
                arrow-up
                0
                ·
                9 months ago

                Here is a short summary. The compile-time reflection project was stopped, and now nobody wants to touch that subject any more due to fear of getting the wrath of the Rust project again (the person responsible for the whole thing is still part of the leadership).

    • anlumo@feddit.de
      link
      fedilink
      English
      arrow-up
      0
      ·
      9 months ago

      Unfortunately, it’s not guaranteed to be the same string all the time, so it’s rather useless for anything but debugging and logging.

  • anlumo@feddit.de
    link
    fedilink
    English
    arrow-up
    0
    ·
    9 months ago

    Oh, inspect has finally arrived! That will help a ton with debug logging.

      • anlumo@feddit.de
        link
        fedilink
        English
        arrow-up
        0
        ·
        9 months ago
        let bar: Result<T, E> = ...;
        let foo = bar.inspect(|value| log::debug("{}", value));
        

        is equivalent to

        let bar: Result<T, E> = ...;
        let foo = bar.map(|value| {
            log::debug("{}", value);
            value
        });