Skip to content

Instantly share code, notes, and snippets.

Created November 4, 2017 15:37
Show Gist options
  • Save anonymous/08a712a36ee1520d57ddf3c6a79664ed to your computer and use it in GitHub Desktop.
Save anonymous/08a712a36ee1520d57ddf3c6a79664ed to your computer and use it in GitHub Desktop.
We create gods and men in rust.
extern crate rand;
use std::iter::Iterator;
use std::collections::HashMap;
use rand::{thread_rng, Rng};
macro_rules! s {
($x: expr) => {
$x.to_owned()
};
}
struct God<'a> {
subjects: Vec<Person<'a>>,
powers: Vec<String>
}
impl<'a> God <'a> {
fn viewPowers (&self) {
let mut all = HashMap::new();
for o in self.subjects.iter() {
all.insert(&o.name, &o.powers);
}
println!("{:?}", all);
}
fn addpowers(&'a mut self) {
for o in self.subjects.iter_mut() {
let mut i = thread_rng();
let i = i.gen_range(0, 2);
if o.powers.len() == 0 {
o.powers.push(&self.powers[i])
}
}
}
}
#[derive(Debug)]
struct Person<'a> {
name: String,
age: u16,
i: usize,
powers: Vec<&'a String>
// job: &'a Company<'a>
}
fn main() {
//println!("Hello, world!");
let mut kratos = God {
subjects: Vec::new(),
powers: vec![s!("Chains of olympus"), s!{"Blade of Zeus"}]
};
let mut efe = Person {
i: 0,
powers: vec![&kratos.powers[0]],
name: "efe".to_owned(),
age: 111,
};
kratos.subjects.push(efe);
{
kratos.viewPowers();
}
{
kratos.addpowers();
}
{
kratos.viewPowers();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment