• fruitcantfly@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    11 hours ago

    With Rust you safe 1 char, and gain needing to skip a whole line to see what type something is.

    Honestly, the Rust way of doing things feels much more natural to me.

    You can read it as

    1. Define a function,
    2. with the name getoffmylawn,
    3. that takes a Lawn argument named lawn,
    4. and returns a bool

    Whereas the C function is read as

    1. Do something with a bool? Could be a variable, could be a function, could be a forward declaration of a function,
    2. whatever it is, it has the name getoffmylawn,
    3. there’s a (, so all options are still on the table,
    4. ok, that’ a function, since it takes a Lawn argument named lawn, that returns a bool
    • cryoistalline@lemmy.ml
      link
      fedilink
      arrow-up
      3
      ·
      6 hours ago

      types in C are pretty weird

      int *a can be read as

      1. *a is a int
      2. since dereferencing is a operator on pointers, a is a pointer to int

      int *a, b is read as

      1. *a and b are int
      2. so a is a pointer to int and b is a int

      bool getofmylawn(Lawn lawn)

      1. getoffmylawn(Lawn lawn) is a bool
      2. since calling is done on functions, getoffmylawn is a function that takes a Lawn and returns a bool

      And then you have function pointers

      bool (*foo(int a))(float b)

      1. (*foo(int a))(float b) is a bool
      2. *foo(int a) is a function from float to bool
      3. foo(int a) is a function pointer from float to bool
      4. foo is a function that takes a int and returns a function pointer from float to bool

      really weird in my opinion.