From 2a38448585e275074fec303f99dcdffc557c5d0a Mon Sep 17 00:00:00 2001 From: Logen Kain Date: Tue, 11 Apr 2017 16:17:19 -0700 Subject: [PATCH] Added rust to practice --- rust/calculator/.gitignore | 1 + rust/calculator/Cargo.lock | 4 +++ rust/calculator/Cargo.toml | 6 ++++ rust/calculator/src/main.rs | 35 ++++++++++++++++++++++ rust/curses_test/src/main.rs | 56 +++++++++++++++++++++++++++++++---- rust/curses_test2/.gitignore | 1 + rust/curses_test2/Cargo.lock | 30 +++++++++++++++++++ rust/curses_test2/Cargo.toml | 7 +++++ rust/curses_test2/src/main.rs | 27 +++++++++++++++++ 9 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 rust/calculator/.gitignore create mode 100644 rust/calculator/Cargo.lock create mode 100644 rust/calculator/Cargo.toml create mode 100644 rust/calculator/src/main.rs create mode 100644 rust/curses_test2/.gitignore create mode 100644 rust/curses_test2/Cargo.lock create mode 100644 rust/curses_test2/Cargo.toml create mode 100644 rust/curses_test2/src/main.rs diff --git a/rust/calculator/.gitignore b/rust/calculator/.gitignore new file mode 100644 index 0000000..eb5a316 --- /dev/null +++ b/rust/calculator/.gitignore @@ -0,0 +1 @@ +target diff --git a/rust/calculator/Cargo.lock b/rust/calculator/Cargo.lock new file mode 100644 index 0000000..3cfa318 --- /dev/null +++ b/rust/calculator/Cargo.lock @@ -0,0 +1,4 @@ +[root] +name = "calculator" +version = "0.1.0" + diff --git a/rust/calculator/Cargo.toml b/rust/calculator/Cargo.toml new file mode 100644 index 0000000..83c1746 --- /dev/null +++ b/rust/calculator/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "calculator" +version = "0.1.0" +authors = ["Logen Kain "] + +[dependencies] diff --git a/rust/calculator/src/main.rs b/rust/calculator/src/main.rs new file mode 100644 index 0000000..646778f --- /dev/null +++ b/rust/calculator/src/main.rs @@ -0,0 +1,35 @@ +/* + * Create a simple calculator + * I should be able to do basic add/sub/mult/divd and be able to use "()" + * + * 1. Take user input + * a. Check to see if there is a previous answer that we are going to act on + * 1. initialize answer to 0 + * 2. if the user starts with an operand, the first number is "answer" + * else, start a new problem with whatever the user puts in + * b. Parse user input for ( ) / * - + in order to formulate a proper math problem + * 1. Strip trailing and leading white space + * 2. Check to see if there is a library that converts a string to a math problem + * c. check for the clear command + * 2. Calculate the answer + * a. Take + * 3. return the answer above a new prompt in a clered screen + * + * + */ + + +fn main() { + let strNumber1; + let strNumber2; + let number: i32; + + strNumber1 = "5"; + strNumber2 = "6"; + number = strNumber1.parse::().unwrap() + strNumber2.parse::().unwrap(); + + + //let my_int = number.parse::().unwrap(); + + println!("Hello, world! Here's your number! {}", number); +} diff --git a/rust/curses_test/src/main.rs b/rust/curses_test/src/main.rs index c6d9069..7b31227 100644 --- a/rust/curses_test/src/main.rs +++ b/rust/curses_test/src/main.rs @@ -1,29 +1,75 @@ extern crate pancurses; -use pancurses::{initscr, endwin, noecho, curs_set}; +use pancurses::{initscr, endwin, noecho, curs_set, cbreak, Input}; +const SCREENWIDTH: i32 = 15; +const SCREENHEIGHT: i32 = 15; + + +struct Character { + row: i32, + col: i32, + symbol: char +} + +fn new_character(row: i32, col: i32, symbol: char) -> Character{ + let mut a = Character { + row: row, + col: col, + symbol: symbol, + }; + return a; +} + fn main() { + /*Create the window*/ let window = initscr(); - + window.keypad(true); + + let mut max_x = 0; + let mut max_y = 0; + + + + getmaxyx(stdscr(), &mut max_y, &mut max_x); + + /*Create our dude*/ + let draco = new_character(5,5,'@'); + /*Set some ncurses config*/ init(); window.printw("Hello Rust"); + // window.printw(&draco.row.to_string()); + /*See function for explination */ refresh_win(&window); - window.getch(); - endwin(); + + loop { + match window.getch() { + Some(Input::Character(c)) => { window.addch(c); }, + Some(Input::KeyDC) => break, + // Some(Input::KeyUp) => { + // let mut y; + // / let mut x; + // getyx(window, y, x); }, + Some(Input) => { window.addstr(&format!("{:?}", Input)); }, + None => () + } + } + endwin(); } fn init() { noecho(); curs_set(0); + cbreak(); } /* This is a test to see how I can find a way to manipulate main() - * data in functions */ + * data (scope) in functions */ fn refresh_win(window: &pancurses::Window) { window.refresh(); } diff --git a/rust/curses_test2/.gitignore b/rust/curses_test2/.gitignore new file mode 100644 index 0000000..eb5a316 --- /dev/null +++ b/rust/curses_test2/.gitignore @@ -0,0 +1 @@ +target diff --git a/rust/curses_test2/Cargo.lock b/rust/curses_test2/Cargo.lock new file mode 100644 index 0000000..9d035a0 --- /dev/null +++ b/rust/curses_test2/Cargo.lock @@ -0,0 +1,30 @@ +[root] +name = "curses_test2" +version = "0.1.0" +dependencies = [ + "ncurses 5.85.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gcc" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ncurses" +version = "5.85.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum gcc 0.3.45 (registry+https://github.com/rust-lang/crates.io-index)" = "40899336fb50db0c78710f53e87afc54d8c7266fb76262fecc78ca1a7f09deae" +"checksum libc 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "88ee81885f9f04bff991e306fea7c1c60a5f0f9e409e99f6b40e3311a3363135" +"checksum ncurses 5.85.0 (registry+https://github.com/rust-lang/crates.io-index)" = "21f71f0e1ae96558612b1e9d188ec4f23149a11ee4fb4b96e130523bea52d605" diff --git a/rust/curses_test2/Cargo.toml b/rust/curses_test2/Cargo.toml new file mode 100644 index 0000000..7ec4417 --- /dev/null +++ b/rust/curses_test2/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "curses_test2" +version = "0.1.0" +authors = ["Logen Kain "] + +[dependencies] +ncurses = "5.85.0" diff --git a/rust/curses_test2/src/main.rs b/rust/curses_test2/src/main.rs new file mode 100644 index 0000000..c620559 --- /dev/null +++ b/rust/curses_test2/src/main.rs @@ -0,0 +1,27 @@ +extern crate ncurses; +use ncurses::*; + +fn main() +{ + /* If your locale env is unicode, you should use `setlocale`. */ + // let locale_conf = LcCategory::all; + // setlocale(locale_conf, "zh_CN.UTF-8"); // if your locale is like mine(zh_CN.UTF-8). + + /* Start ncurses. */ + initscr(); + + /* Print to the back buffer. */ + printw("Hello, world!"); + + /* Print some unicode(Chinese) string. */ + // printw("Great Firewall dislike VPN protocol.\nGFW 不喜欢 VPN 协议。"; + + /* Update the screen. */ + refresh(); + + /* Wait for a key press. */ + getch(); + + /* Terminate ncurses. */ + endwin(); +}