mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 12:22:12 +00:00
Merge pull request #165 from rrokkam/rust-update
Update Rust to 2018 edition
This commit is contained in:
commit
ce38179dbd
6
rust/Cargo.lock
generated
6
rust/Cargo.lock
generated
@ -1,4 +1,6 @@
|
|||||||
[root]
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
[[package]]
|
||||||
name = "rust"
|
name = "rust"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rust"
|
name = "rust"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
authors = ["Michael Gerhaeuser <michael.gerhaeuser@gmail.com>"]
|
authors = ["Michael Gerhaeuser <michael.gerhaeuser@gmail.com>", "rrokkam <rohithrokkam@gmail.com>"]
|
||||||
|
edition = "2018"
|
||||||
|
|||||||
@ -1,38 +1,46 @@
|
|||||||
use std::string;
|
use std::fmt::{self, Display};
|
||||||
use std::vec;
|
|
||||||
|
|
||||||
pub struct Item {
|
pub struct Item {
|
||||||
pub name: string::String,
|
pub name: String,
|
||||||
pub sell_in: i32,
|
pub sell_in: i32,
|
||||||
pub quality: i32
|
pub quality: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Item {
|
impl Item {
|
||||||
pub fn new(name: String, sell_in: i32, quality: i32) -> Item {
|
pub fn new(name: impl Into<String>, sell_in: i32, quality: i32) -> Item {
|
||||||
Item {name: name, sell_in: sell_in, quality: quality}
|
Item {
|
||||||
|
name: name.into(),
|
||||||
|
sell_in,
|
||||||
|
quality,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Display for Item {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
write!(f, "{}, {}, {}", self.name, self.sell_in, self.quality)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct GildedRose {
|
pub struct GildedRose {
|
||||||
pub items: vec::Vec<Item>
|
pub items: Vec<Item>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl GildedRose {
|
impl GildedRose {
|
||||||
pub fn new(items: vec::Vec<Item>) -> GildedRose {
|
pub fn new(items: Vec<Item>) -> GildedRose {
|
||||||
GildedRose {items: items}
|
GildedRose { items }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_quality(&mut self) {
|
pub fn update_quality(&mut self) {
|
||||||
for item in &mut self.items {
|
for item in &mut self.items {
|
||||||
if item.name != "Aged Brie" && item.name != "Backstage passes to a TAFKAL80ETC concert" {
|
if item.name != "Aged Brie" && item.name != "Backstage passes to a TAFKAL80ETC concert"
|
||||||
|
{
|
||||||
if item.quality > 0 {
|
if item.quality > 0 {
|
||||||
if item.name != "Sulfuras, Hand of Ragnaros" {
|
if item.name != "Sulfuras, Hand of Ragnaros" {
|
||||||
item.quality = item.quality - 1;
|
item.quality = item.quality - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if item.quality < 50
|
if item.quality < 50 {
|
||||||
{
|
|
||||||
item.quality = item.quality + 1;
|
item.quality = item.quality + 1;
|
||||||
|
|
||||||
if item.name == "Backstage passes to a TAFKAL80ETC concert" {
|
if item.name == "Backstage passes to a TAFKAL80ETC concert" {
|
||||||
@ -77,4 +85,15 @@ impl GildedRose {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test;
|
mod tests {
|
||||||
|
use super::{GildedRose, Item};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn foo() {
|
||||||
|
let items = vec![Item::new("foo", 0, 0)];
|
||||||
|
let mut rose = GildedRose::new(items);
|
||||||
|
rose.update_quality();
|
||||||
|
|
||||||
|
assert_eq!("fixme", rose.items[0].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,10 +0,0 @@
|
|||||||
use super::{Item, GildedRose};
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
pub fn foo() {
|
|
||||||
let items = vec![Item::new(String::from("foo"), 0, 0)];
|
|
||||||
let mut rose = GildedRose::new(items);
|
|
||||||
rose.update_quality();
|
|
||||||
|
|
||||||
assert_eq!("fixme", rose.items[0].name);
|
|
||||||
}
|
|
||||||
@ -1,31 +1,30 @@
|
|||||||
|
|
||||||
mod gildedrose;
|
mod gildedrose;
|
||||||
|
|
||||||
use gildedrose::{Item, GildedRose};
|
use gildedrose::{GildedRose, Item};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let items = vec![
|
let items = vec![
|
||||||
Item::new(String::from("+5 Dexterity Vest"), 10, 20),
|
Item::new("+5 Dexterity Vest", 10, 20),
|
||||||
Item::new(String::from("Aged Brie"), 2, 0),
|
Item::new("Aged Brie", 2, 0),
|
||||||
Item::new(String::from("Elixir of the Mongoose"), 5, 7),
|
Item::new("Elixir of the Mongoose", 5, 7),
|
||||||
Item::new(String::from("Sulfuras, Hand of Ragnaros"), 0, 80),
|
Item::new("Sulfuras, Hand of Ragnaros", 0, 80),
|
||||||
Item::new(String::from("Sulfuras, Hand of Ragnaros"), -1, 80),
|
Item::new("Sulfuras, Hand of Ragnaros", -1, 80),
|
||||||
Item::new(String::from("Backstage passes to a TAFKAL80ETC concert"), 15, 20),
|
Item::new("Backstage passes to a TAFKAL80ETC concert", 15, 20),
|
||||||
Item::new(String::from("Backstage passes to a TAFKAL80ETC concert"), 10, 49),
|
Item::new("Backstage passes to a TAFKAL80ETC concert", 10, 49),
|
||||||
Item::new(String::from("Backstage passes to a TAFKAL80ETC concert"), 5, 49),
|
Item::new("Backstage passes to a TAFKAL80ETC concert", 5, 49),
|
||||||
// this conjured item does not work properly yet
|
// this conjured item does not work properly yet
|
||||||
Item::new(String::from("Conjured Mana Cake"), 3, 6)
|
Item::new("Conjured Mana Cake", 3, 6),
|
||||||
];
|
];
|
||||||
let mut rose = GildedRose::new(items);
|
let mut rose = GildedRose::new(items);
|
||||||
|
|
||||||
println!("OMGHAI!");
|
println!("OMGHAI!");
|
||||||
for i in (0..30) {
|
for i in 0..30 {
|
||||||
println!("-------- day {} --------", i);
|
println!("-------- day {} --------", i);
|
||||||
println!("name, sellIn, quality");
|
println!("name, sellIn, quality");
|
||||||
for item in &rose.items {
|
for item in &rose.items {
|
||||||
println!("{}, {}, {}", item.name, item.sell_in, item.quality);
|
println!("{}", item);
|
||||||
}
|
}
|
||||||
println!("");
|
println!();
|
||||||
rose.update_quality();
|
rose.update_quality();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user