this post was submitted on 20 May 2024
7 points (100.0% liked)
Learning Rust and Lemmy
393 readers
1 users here now
Welcome
A collaborative space for people to work together on learning Rust, learning about the Lemmy code base, discussing whatever confusions or difficulties we're having in these endeavours, and solving problems, including, hopefully, some contributions back to the Lemmy code base.
Rules TL;DR: Be nice, constructive, and focus on learning and working together on understanding Rust and Lemmy.
Running Projects
- Rust for Lemmings Reading Club (portal)
- Rust beginners challenges (portal)
- Heroically Helpful Comments
Policies and Purposes
- This is a place to learn and work together.
- Questions and curiosity is welcome and encouraged.
- This isn't a technical support community. Those with technical knowledge and experienced aren't obliged to help, though such is very welcome. This is closer to a library of study groups than stackoverflow. Though, forming a repository of useful information would be a good side effect.
- This isn't an issue tracker for Lemmy (or Rust) or a place for suggestions. Instead, it's where the nature of an issue, what possible solutions might exist and how they could be or were implemented can be discussed, or, where the means by which a particular suggestion could be implemented is discussed.
See also:
Rules
- Lemmy.ml rule 2 applies strongly: "Be respectful, even when disagreeing. Everyone should feel welcome" (see Dessalines's post). This is a constructive space.
- Don't demean, intimidate or do anything that isn't constructive and encouraging to anyone trying to learn or understand. People should feel free to ask questions, be curious, and fill their gaps knowledge and understanding.
- Posts and comments should be (more or less) within scope (on which see Policies and Purposes above).
- See the Lemmy Code of Conduct
- Where applicable, rules should be interpreted in light of the Policies and Purposes.
Relevant links and Related Communities
- Lemmy Organisation on GitHub
- Lemmy Documentation
- General Lemmy Discussion Community
- Lemmy Support Community
- Rust Community on lemmy.ml
- Rust Community on programming.dev
Thumbnail and banner generated by ChatGPT.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
If I had to explain ownership in rust (based on The Book, Ch 4)
I had a crack at this and found myself writing for a while. I thought I'd pitch at a basic level and try to provide a sort core and essential conceptual basis (something which I think The Book might be lacking a little??)
Dunno if this will be useful or interesting to anyone, but I found it useful to write. If anyone does find any significant errors, please let me know!
General Idea or Purpose
Ownership
my_variable.copy()
) and in the case of custom types (egstruct
s) added to or implemented for that particular type (which isn't necessarily difficult).Borrowing (with references)
shared references
are "read only" references, whileunique references
are mutable references that enable their underlying data to be mutated (AKA, mutable references).mutable or unique references
andreference variables that are mutable
. Aunique reference
is able to mutate the data pointed to. While amutable variable that is also a reference
can have its pointer and the data/memory and points to mutated. These are independent aspects and can be freely combined.reference
is just another variable whose data is a pointer or memory address.Ownership and read/write permissions are altered when references are created
unique reference
.Lifetimes are coming
'a
s in the following code:fn longest<'a>(x: &'a str, y: &'a str) -> &'a str
.first_or
takes two references but returns only one reference that will, depending entirely on runtime logic, depend on one of the two input references. IE, depending on what happens at runtime, one of the input references have a longer lifetime than the other. As Rust cannot be sure of the lifetimes of all three references, the programmer has to provide that information. A topic for later.