main / src/main.rs
1.6 KB · Rust Raw
1#![allow(dead_code)]
2
3use std::io;
4use std::io::Write;
5
6#[derive(Debug)]
7enum ParameterType {
8 Operational,
9 UI,
10 Tool
11}
12
13#[derive(Debug)]
14struct PluginConfig {
15 name: String
16}
17
18#[derive(Debug)]
19enum Value {
20 Instruction(String),
21 Asset(String),
22 Plugin(PluginConfig)
23}
24
25#[derive(Debug)]
26struct Parameter {
27 key: String,
28 category: ParameterType,
29 value: Value
30}
31
32struct Jarvis {
33 name: String,
34 cpu_usage: i32,
35 config: Vec<Parameter>
36}
37
38impl Jarvis {
39 fn create() -> Jarvis {
40 let new_instance = Jarvis {
41 name: "Jarvis coding assistant".to_string(),
42 cpu_usage: 125,
43 config: vec![]
44 };
45
46 new_instance
47 }
48
49 fn default_config(&mut self) {
50 let tone_value = Value::Asset("Positive".to_string());
51 let tone = Parameter {
52 key: "Tone".to_string(),
53 category: ParameterType::UI,
54 value: tone_value
55 };
56
57 self.config.push(tone);
58 }
59
60 fn operate(&self) {
61 println!("Hello Sr. Stark");
62 println!("Stats: ");
63 println!("\tname: {}", self.name);
64 println!("\tcpu usage: {}", self.cpu_usage);
65 println!("\tconfig: {:?}", self.config);
66 println!("How can I help you?");
67 print!("=>> ");
68 io::stdout().flush().expect("Failed to flush stdout");
69 let mut prompt = String::new();
70 io::stdin().read_line(&mut prompt).expect("failed to readline");
71
72
73
74 println!("Exiting....");
75 }
76}
77
78fn main() {
79 let mut jarvis = Jarvis::create();
80
81 jarvis.default_config();
82 jarvis.operate();
83}