This is my first project in rust, called: since. A small tool to filter logfiles or any other files with a timestamp in it, by a given timestamp.

For example:

since 1h /var/log/messages prints all lines from the last hour. since 00:00 /var/log/messages prints all lines since 00:00.

It would be nice if you could take a look at the code. What would you change, what should I change?

I’m not a professional programmer, this is just a hobby, but I want to learn as much as possible.

  • larixOP
    link
    fedilink
    arrow-up
    8
    ·
    edit-2
    8 months ago

    Thank you very much. I’ll change it. I did run cargo clippy, but it didn’t complained anything anymore before I published the code. 🙂

    One question to return value Option<&String>:

    is it better to change to Option<&str> or &Option<String> if the value in the struct is a Option<String>? The latter sounds more logical to me.

      • Ephera@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        8 months ago

        Hmm, interesting. The documentation tells me, it creates a new Option value, and allocating memory every time someone just wants to look at a value could be pretty bad.

        But I guess, an Option of a reference never needs to allocate memory, because it’ll either be a pointer to a value (Some) or a pointer to null (None). Right?

        Well, that explains why it’s technically possible.
        As for why Option<&str> is preferrable then:
        It hides away your internals. Your caller should only care whether they can get the value or not (Some vs. None), not what the precise reason is. That reason or your internal structure might change.

        @larix

        • larixOP
          link
          fedilink
          arrow-up
          3
          ·
          8 months ago

          Well, that explains why it’s technically possible.

          As for why Option<&str> is preferrable then: It hides away your internals. Your caller should only care whether they can get the value or not (Some vs. None), not what the precise reason is. That reason or your internal structure might change.

          Yes, that makes sense too. Great!

          I’ve updated the code as recommended.

          @[email protected] @[email protected]

    • Ephera@lemmy.ml
      link
      fedilink
      arrow-up
      3
      ·
      8 months ago

      Hmm, not quite sure why Clippy didn’t say anything then. I think, it was a Option<&String> which I had seen as a parameter type. Maybe it doesn’t complain when it’s wrapped in an Option…