A friend was looking for a way to define a function in Rust outside of the module upon which he was working, using the tried n' approved method of creating a "library" of re-usable functions.
I'd not done this before, so was happy to jump in and have a play.
This is with what I ended up: -
Create a new project
cargo new greetings
Created binary (application) `greetings` package
Enter the project root
cd greetings/
See what we have
ls -al
total 16
drwxr-xr-x 6 hayd staff 192 12 Nov 15:56 .
drwxr-xr-x 4 hayd staff 128 12 Nov 15:56 ..
drwxr-xr-x 9 hayd staff 288 12 Nov 15:56 .git
-rw-r--r-- 1 hayd staff 8 12 Nov 15:56 .gitignore
-rw-r--r-- 1 hayd staff 178 12 Nov 15:56 Cargo.toml
drwxr-xr-x 3 hayd staff 96 12 Nov 15:56 src
Create a library directory etc.
mkdir -p lib/src
Create the library module
vi lib/src/lib.rs
pub fn greeting(name: &str) {
println!("Hello {}, how you doing ?", name);
}
Create the main module
vi src/main.rs
use greeting_lib::greeting;
fn main() {
let name = std::env::args().nth(1).expect("no name given");
greeting(&name);
}
Update the Cargo manifest
vi Cargo.toml
[package]
name = "greetings"
version = "0.1.0"
edition = "2021"
[lib]
name = "greeting_lib"
path = "lib/src/lib.rs"
Build the project
cargo build
Compiling greetings v0.1.0 (/Users/hayd/functions.rust/greetings)
Finished dev [unoptimized + debuginfo] target(s) in 0.56s
Test
cargo run Roy
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/greetings Roy`
Hello Roy, how you doing ?
cargo run Ted
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/greetings Ted`
Hello Ted, how you doing ?
cargo run Keely
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/greetings Keely`
Hello Keely, how you doing ?
cargo run Rebecca
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/greetings Rebecca`
Hello Rebecca, how you doing ?
Build a binary
cargo install --path .
Installing greetings v0.1.0 (/Users/hayd/functions.rust/greetings)
Compiling greetings v0.1.0 (/Users/hayd/functions.rust/greetings)
Finished release [optimized] target(s) in 0.55s
Installing /Users/hayd/.cargo/bin/greetings
Installed package `greetings v0.1.0 (/Users/hayd/functions.rust/greetings)` (executable `greetings`)
Validate the built binary
ls -al target/release/greetings
-rwxr-xr-x 2 hayd staff 464416 12 Nov 16:08 target/release/greetings
Test the binary
./target/release/greetings Beard
Hello Beard, how you doing ?
And that's all she ( I mean, I ) wrote 🤣
No comments:
Post a Comment