new programm for password generation
This commit is contained in:
parent
5a945cdcb0
commit
d9f48e9fcc
9 changed files with 528 additions and 40 deletions
49
borrowing.rs
Executable file
49
borrowing.rs
Executable file
|
@ -0,0 +1,49 @@
|
|||
// ownership
|
||||
// Happy Jesus Respawn! ;D
|
||||
|
||||
|
||||
// main function
|
||||
fn main() {
|
||||
// assign vectors
|
||||
let v1 = vec![1, 2, 3];
|
||||
let v2 = vec![1, 2, 3];
|
||||
|
||||
// use functions
|
||||
let (v1, v2, answer) = foo(v1, v2);
|
||||
let answer2 = boo(&v1, &v2);
|
||||
println!("Answer is: {}", answer);
|
||||
println!("Second answer is: {}", answer2);
|
||||
|
||||
// playing with mutable references
|
||||
let mut x = 5;
|
||||
{ // needed for error free compiling
|
||||
let y = &mut x; // y borrows x here
|
||||
*y += 1; // '*' needed to access references
|
||||
}
|
||||
println!("{}", x); // tries to borrow x here -> only 1 &mut x allowed!
|
||||
|
||||
let y = &5; // the same as 'let _y = 5; let y = &_y'
|
||||
let f = Foo {x: y };
|
||||
println!("{}", f.x);
|
||||
}
|
||||
|
||||
|
||||
// functions
|
||||
fn foo(v1: Vec<i32>, v2: Vec<i32>) -> (Vec<i32>, Vec<i32>, i32) {
|
||||
// return answer // give back ownership of vectors
|
||||
(v1, v2, 42)
|
||||
}
|
||||
|
||||
//better version of 'foo' using advantage of borrowing
|
||||
fn boo(v1: &Vec<i32>, v2: &Vec<i32>) -> i32 {
|
||||
// give back answer
|
||||
42
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// struct -> way for creating more complex data types
|
||||
struct Foo<'a> { // declaring lifetime 'a
|
||||
x: &'a i32, // using lifetime 'a
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue