ysads / cat-lang

⚙️ A repo to learn Rust through the build of a small programming language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rust

Vars & Allocation

  1. str is a fixed-length string store somewhere in the memory. String on the other hand is a growable, heap-allocated string.

Attributes

  1. Are actually defined by ECMA (?) and represent a unified way of creating metadata. (Reference)[https://doc.rust-lang.org/reference/attributes.html].

  2. Useful when writing structs and enums, since you can automatically derive functions instead of writing them yourself.

#[derive(PartialEq)]
struct Point { x: i32, y: i32 }

let p1 = Point { x: 1, y: 2 }
let p2 = Point { x: 1, y: 2 }
p1 == p2 // true, without writing code for equality

struct Circle { c: Point, r: i32 }
let c1 = Circle { c: p1, r: 1 }
let c2 = Circle { c: p1, r: 1 }

c1 == c2 // invalid! don't know how to compare them

Variables

  1. Even though every variable is immutable by default, you can redeclare the same binding. This implies shadowing the previous declarations.
let mut a = 1;
a = 2; // valid, a is mutable

let b = 1;
b = 2; // invalid!

let c = "hello";
let c = 3; // valid, but value prev. referenced by c is lost

About

⚙️ A repo to learn Rust through the build of a small programming language


Languages

Language:Rust 100.0%