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