Whenever I encounter an interesting Rust programming technique, I add it to this blog post. I’ve amassed a bit of a collection. Hopefully someone finds it interesting and useful!

    • Justin Ossevoort@toot.community
      link
      fedilink
      arrow-up
      0
      ·
      1 年前

      @calcopiritus @hatchet That way you can pass a reference or anything that can be turned into a reference as an argument. So the caller can supply a &T, Box, Rc, Arc, … (I dont’t know if there is a blanket impl so that even T itself will work.

      • hatchet@sh.itjust.worksOP
        link
        fedilink
        arrow-up
        1
        ·
        1 年前

        Well, actually I would tend to agree that &[T] is preferable to AsRef in most cases; all of the smart pointers you mentioned can also easily be turned into plain references. I probably could have chosen a better example.

  • pgsuper@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 年前

    Nice job! I’d add that the target of the Rustdoc link shortcuts can be customized, in case they are not autodetected or point to an undesired location, like so:

    /// Use a [Tool]
    ///
    /// [Tool]: lib::types::Tool
    

    That will make the word Tool point to that type (note that the namespaces there - in lib::types::Tool - are relative to the current module / context, so you can use an imported name directly there too, for example).