diff --git a/generate_number/rust_version/.gitignore b/generate_number/rust_version/.gitignore new file mode 100644 index 0000000..9f97022 --- /dev/null +++ b/generate_number/rust_version/.gitignore @@ -0,0 +1 @@ +target/ \ No newline at end of file diff --git a/generate_number/rust_version/.kilo/agent-manager.json b/generate_number/rust_version/.kilo/agent-manager.json new file mode 100644 index 0000000..93d494d --- /dev/null +++ b/generate_number/rust_version/.kilo/agent-manager.json @@ -0,0 +1,9 @@ +{ + "worktrees": {}, + "sessions": {}, + "tabOrder": { + "local": [ + "pending:1" + ] + } +} \ No newline at end of file diff --git a/generate_number/rust_version/Cargo.lock b/generate_number/rust_version/Cargo.lock new file mode 100644 index 0000000..db0822d --- /dev/null +++ b/generate_number/rust_version/Cargo.lock @@ -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" diff --git a/generate_number/rust_version/Cargo.toml b/generate_number/rust_version/Cargo.toml new file mode 100644 index 0000000..72077f7 --- /dev/null +++ b/generate_number/rust_version/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "rust_version" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/generate_number/rust_version/README.md b/generate_number/rust_version/README.md new file mode 100644 index 0000000..e69de29 diff --git a/generate_number/rust_version/src/main.rs b/generate_number/rust_version/src/main.rs new file mode 100644 index 0000000..680892b --- /dev/null +++ b/generate_number/rust_version/src/main.rs @@ -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 and returns modified version + +// Version B (borrows): Same but uses mutable reference +/* --------------------------------------------- 100 -------------------------------------------- */ + + + + +use std::vec; + + + +fn generate_move_ownership(mut v:Vec, n:u64) -> Vec { + + 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, 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); + + +} + + + + + + + + + + + + + + + + + + + + + + +