Created
May 17, 2024 00:55
-
-
Save georgematos/3f5930ba2655f344feccd26c6a1c9616 to your computer and use it in GitHub Desktop.
Rust - reference and derreference
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn main() { | |
let pointer_1 = String::from("Hello"); | |
let pointer_2 = String::from("World"); | |
let pointer_3 = "a literal string"; | |
// cria o ponteiro pointer_4 apontando para 1 na heap | |
let pointer_4: Box<i32> = Box::new(1); | |
// cria uma referência do tipo Box<i32> para o pointer_4 | |
let reference_1: &Box<i32> = &pointer_4; | |
/* para derreferenciar e acessar o valor 1 na heap preciso fazer duas derreferencias, | |
a primeira para voltar ao pointer_4 e a segunda para voltar do pointer_4 para o valor na heap */ | |
let derreference_1: i32 = **reference_1; | |
println!("{pointer_1} {pointer_2}"); | |
// println!("{reference_1}"); | |
println!("{pointer_3}"); | |
println!("{pointer_3}"); | |
println!("{pointer_4}"); | |
println!("{derreference_1}"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment