I am trying to understand the std::process::Termination trait.

As I’m not really used to read libraries, I took this as a challenge to try understanding a bit more about how to read them as well.

I think trying to build a library would give me better understanding, but for now…

Termination is quite easy, from the trait page I can see that this trait has single method: report, which returns an ExitCode.

pub trait Termination {
    fn report(self) -> ExitCode;
}

But when I try to dig in further and i read the page related to ExitCode, it confuses me a bit.

ExitCode is a struct, therefore it behaves like a type with many fields which define the types contained in the struct.

I cannot really understand what’s the point of this type… I don’t see any fields defined in the struct and this part confuses me a lot:

The standard library provides the canonical SUCCESS and FAILURE exit codes as well as From<u8> for ExitCode for constructing other arbitrary exit codes.

I even thought this meant it was an enum which had the SUCCESS, FAILURE etc as variants, but this does not seem the case.

Can you help me to understand how this specific structs work, what exactly does it do and how I should read library pages like this one?

  • BB_C@programming.dev
    link
    fedilink
    arrow-up
    1
    ·
    9 days ago

    Another huh from me. Or maybe I’m missing something, because this should all be obvious.

    The source of the standard library is a rustup component that everyone should have installed. As for crates, you don’t have to manually download any sources. Just add the crate as a dependency, and jump around definitions as much as you like. You can remove the dependency later if you decide to not use it.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 days ago

      Alright, yeah, I guess, I could’ve opened one of my Rust projects, written down use std::process::Termination; and jumped in that way. Admittedly, I didn’t think of that, but it also sounded like OP wants to learn how to read the webpage documentation…