From 921497ab455cc651af0df8cdc914870b6dd3a8f1 Mon Sep 17 00:00:00 2001 From: alban Date: Wed, 23 Nov 2022 10:49:11 +0100 Subject: [PATCH] init --- .gitignore | 1 + Cargo.lock | 5 +++++ Cargo.toml | 9 +++++++++ src/main.rs | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..920bf96 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "tuto" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..c3d2e06 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "tuto" +version = "0.1.0" +authors = ["alban "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..0ee65ff --- /dev/null +++ b/src/main.rs @@ -0,0 +1,39 @@ +use std::env; + +#[derive(Debug)] +enum Maybe { + Just(T), + Nothing +} + +fn main() { + let arg = env::args().nth(1); + + println!("{:?}", Maybe::Just(42)); + + match arg { + Some(result) => { + let ip = ip_to_int(&result); + println!("{:b}", ip); + }, + None => println!("need one arg") + } + + + +} + +fn ip_to_int(ip_str: &str) -> u32 { + let mut tbl : Vec<&str> = ip_str.split(".") + .collect(); + tbl.reverse(); + + let mut ip = 0_u32; + + for (idx, s) in tbl.iter().enumerate() { + let nbr : u8 = s.parse() + .expect("parse fail"); + ip += (nbr as u32) << 8*idx; + } + ip +}