Enums in Rust can combine unit, tuple and named field variants to represent a wide range of concepts. This challenge uses enums to represent playing cards in a card game.
You will implement a Card
enum that can represent either:
King
, Queen
, Jack
), which is a unit variant.7 of Hearts
), which is a tuple variant.Create an enum Card
with the following variants:
King
, Queen
, Jack
(unit variants for face cards).Numbered(u8, String)
representing a numbered card with its value and suit.Write a function card_description
that takes a Card
and returns a description of the card:
King
, return "King"
.Queen
, return "Queen"
.Jack
, return "Jack"
.Numbered(value, suit)
, return "Numbered(value) of suit"
, e.g., "7 of Hearts"
.match
statement to handle each enum variant.format!
macro for the Numbered
variant.pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{value} of {suit}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(number, suit) => format!("{} of {}", number, suit), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{} of {}", value, suit) }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{value} of {suit}") }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{value} of {suit}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(_value, _suit) => format!("{_value} of {_suit}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(num, suit) => format!("{} of {}", num, suit), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{} of {}", value, suit), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{} of {}", value, suit).to_string() }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{} of {}", value, suit), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), //Card::Numbered(v, s) => v.to_string() + " of " + s, Card::Numbered(value, suit) => format!("{} of {}", value, suit) }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(v, s) => v.to_string() + " of " + s, }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(i32, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(num, s) => format!("{num} of {s}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card{ Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(number, suit) => format!("{number} of {suit}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{} of {}", value, suit), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suite) => format!("{} of {}", value, suite) }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => value.to_string() + " of " + suit }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => { String::from("King") }, Card::Queen => { String::from("Queen") }, Card::Jack => { String::from("Jack") }, Card::Numbered(value, suit) => { String::from(format!("{} of {}", value, suit)) } }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{} of {}", value, suit), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_owned(), Card::Queen => "Queen".to_owned(), Card::Jack => "Jack".to_owned(), Card::Numbered(value, suit) => format!("{} of {}", value, suit).to_owned() }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_owned(), Card::Queen => "Queen".to_owned(), Card::Jack => "Jack".to_owned(), Card::Numbered(value, suit) => format!("{} of {}", value, suit).to_owned() }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, name) => format!("{value} of {name}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{value} of {suit}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(num, desc) => format!("{num} of {desc}"), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{value} of {suit}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8,String)}pub fn card_description(card: &Card) -> String { // Your code here... match card{ Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(val,suit) => format!("{val} of {suit}") }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{} of {}", value, suit), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8,String)}pub fn card_description(card: &Card) -> String { // Your code here... match card{ Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(val,suit) => format!("{val} of {suit}") }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{value} of {suit}"), _ => "".to_string() }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{value} of {suit}"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { &Card::King => String::from("King"), &Card::Queen => String::from("Queen"), &Card::Jack => String::from("Jack"), &Card::Numbered(value,ref suit) => format!("{value} of {suit}"), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{value} of {suit}"), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(num, suit) => format!("{num} of {suit}") }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_owned(), Card::Queen => "Queen".to_owned(), Card::Jack => "Jack".to_owned(), Card::Numbered(value, name) => {format!("{value} of {name}")} }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{value} of {suit}") }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{} of {}", value, suit), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{} of {}", value, suit) }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(rank, suit) => format!("{rank} of {suit}"), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, text) => format!("{} of {}", value, text), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { match card { Card::King => String::from("King"), Card::Queen => String::from("Queen"), Card::Jack => String::from("Jack"), Card::Numbered(value, suit) => format!("{value} of {suit}"), }}
pub enum Card { // Define the Card variants here Ass, King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card{ Card::King => return "King".to_string(), Card::Queen => return "Queen".to_string(), Card::Jack => return "Jack".to_string(), Card::Numbered(value, suit) => return format!("{value} of {suit}"), _ => format!("Undefined Card Type"), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => { format!("{} of {}", value, suit) }, }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(n, s) => n.to_string() + " of " + s }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(n, s) => n.to_string() + " of " + s }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(val, suit) => format!("{} of {}", val, suit) }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(i8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{} of {}", value, suit) }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{} of {}", value, suit) }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { // Your code here... match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(val, suit) => format!("{val} of {suit}") }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(rank, suit) => format!("{} of {}", rank, suit), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(rank, suit) => {format!{"{} of {}", rank, suit}}, }}