←back to thread

451 points birdculture | 3 comments | | HN request time: 0.731s | source
Show context
Animats ◴[] No.43979394[source]
It's like reading "A Discipline of Programming", by Dijkstra. That morality play approach was needed back then, because nobody knew how to think about this stuff.

Most explanations of ownership in Rust are far too wordy. See [1]. The core concepts are mostly there, but hidden under all the examples.

    - Each data object in Rust has exactly one owner.
      - Ownership can be transferred in ways that preserve the one-owner rule.
      - If you need multiple ownership, the real owner has to be a reference-counted cell. 
        Those cells can be cloned (duplicated.)
      - If the owner goes away, so do the things it owns.

    - You can borrow access to a data object using a reference. 
      - There's a big distinction between owning and referencing.
      - References can be passed around and stored, but cannot outlive the object.
        (That would be a "dangling pointer" error).
      - This is strictly enforced at compile time by the borrow checker.
That explains the model. Once that's understood, all the details can be tied back to those rules.

[1] https://doc.rust-lang.org/book/ch04-01-what-is-ownership.htm...

replies(17): >>43979460 #>>43979907 #>>43980199 #>>43981064 #>>43981313 #>>43981587 #>>43981720 #>>43982074 #>>43982249 #>>43982619 #>>43982747 #>>43983156 #>>43984730 #>>43988460 #>>43990363 #>>43996196 #>>44008391 #
1. amelius ◴[] No.43983156[source]
Seems incomplete. E.g. what happens if a borrower goes away?
replies(1): >>43984468 #
2. andromeduck ◴[] No.43984468[source]
It stops being borrowed?! What kind of question is this.
replies(1): >>43984580 #
3. amelius ◴[] No.43984580[source]
A question about definitions. Some other options would be:

    - the object is destroyed
    - the program core dumps
    - it is a compile time error
Assuming the best possible outcome in case of missing information turns out to be a bad strategy in general.