update
This commit is contained in:
1
generate_number/rust_version/.gitignore
vendored
Normal file
1
generate_number/rust_version/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
target/
|
||||||
9
generate_number/rust_version/.kilo/agent-manager.json
Normal file
9
generate_number/rust_version/.kilo/agent-manager.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"worktrees": {},
|
||||||
|
"sessions": {},
|
||||||
|
"tabOrder": {
|
||||||
|
"local": [
|
||||||
|
"pending:1"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
7
generate_number/rust_version/Cargo.lock
generated
Normal file
7
generate_number/rust_version/Cargo.lock
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rust_version"
|
||||||
|
version = "0.1.0"
|
||||||
6
generate_number/rust_version/Cargo.toml
Normal file
6
generate_number/rust_version/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "rust_version"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
0
generate_number/rust_version/README.md
Normal file
0
generate_number/rust_version/README.md
Normal file
80
generate_number/rust_version/src/main.rs
Normal file
80
generate_number/rust_version/src/main.rs
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
// Concepts: Ownership, borrowing, loops
|
||||||
|
|
||||||
|
// Generate first n Fibonacci numbers (starting 0, 1):
|
||||||
|
|
||||||
|
// Version A (moves): Function takes ownership of a Vec<u64> and returns modified version
|
||||||
|
|
||||||
|
// Version B (borrows): Same but uses mutable reference
|
||||||
|
/* --------------------------------------------- 100 -------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use std::vec;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn generate_move_ownership(mut v:Vec<u64>, n:u64) -> Vec<u64> {
|
||||||
|
|
||||||
|
let mut counter = 0;
|
||||||
|
while counter < n {
|
||||||
|
let latest_number = v[v.len()-1];
|
||||||
|
let next_number = latest_number -1 +3;
|
||||||
|
v.push(next_number);
|
||||||
|
counter = counter + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return v;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn generate_borrow_ownership(v: &mut Vec<u64>, n:u64) {
|
||||||
|
let mut counter = 0;
|
||||||
|
while counter < n {
|
||||||
|
let latest_number:u64 = v[v.len()-1];
|
||||||
|
let next_number = latest_number -1 +3;
|
||||||
|
v.push(next_number);
|
||||||
|
counter = counter + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let n = 5;
|
||||||
|
let v = vec![2];
|
||||||
|
let v = generate_move_ownership(v, n);
|
||||||
|
|
||||||
|
println!("move ownership {:?}", v);
|
||||||
|
|
||||||
|
let mut v2 = vec![5];
|
||||||
|
generate_borrow_ownership(&mut v2, n);
|
||||||
|
println!("borrow ownership {:?}", v2);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user