Primitives are values stored immediately on the stack. In Rust terminology,
these types are Copy
, so reassigning them to different values will create
distinct copies of the underlying value.
The primitives available in Rune are:
()
.true
and false
.b'\xff'
.'今'
. Which are 4 byte wide characters.42
. Which are 64-bit signed integers.3.1418
. Which are 64-bit floating point numbers."Hello World"
.You can see that these bytes are Copy
when assigning them to a different
variable, because a separate copy of the value will be used automatically.
pub fn main() {
let a = 1;
let b = a;
a = 2;
println!("{}", a);
println!("{}", b);
}
$> cargo run --bin rune -- run scripts/book/primitives/copy.rn
2
1
== () (691.3µs)
Other types like strings are stored by reference. Assigning them to a different variable will only copy their reference, but they still point to the same underlying data.
pub fn main() {
let a = String::from_str("Hello");
let b = a;
a.push_str(" World");
println(a);
println(b);
}
$> cargo run --bin rune -- run scripts/book/primitives/primitives.rn
Hello World
Hello World
== () (9.7406ms)