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 => "King".to_owned(), Card::Queen => "Queen".to_owned(), Card::Jack => "Jack".to_owned(), 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(i,k) => format!("{} of {}", i,k), }}
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(a, b) => format!("{} of {}", a, b) }}
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(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 { 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(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(val, suit) => format!("{} of {}", val, 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(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 => return "King".into(), Card::Queen => return "Queen".into(), Card::Jack => return "Jack".into(), Card::Numbered(value, suit) => return format!("{} of {}", value, suit).into(), }}
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(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 { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(n, suit) => format!("{} of {}", n, 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 { 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(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!("{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,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 { 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, name) => format!("{num} 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 => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(value, suit) => format!("{value} of {suit}") }}
pub enum Card { Numbered(u8, String), Jack, Queen, King,}pub fn card_description(card: &Card) -> String { match card { Card::Numbered(value, suit) => format!("{value} of {suit}"), Card::Jack => "Jack".into(), Card::Queen => "Queen".into(), Card::King => "King".into(), }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(i32, 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(val, suit) => format!("{} of {}", val, suit), }}
pub enum Card { King, Queen, Jack, Numbered(u8, String),}pub fn card_description(card: &Card) -> String { use Card::*; match card { King => "King".to_string(), Queen => "Queen".to_string(), Jack => "Jack".to_string(), Numbered(number, suit) => format!("{} of {}", number, 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(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".into(), Card::Queen => "Queen".into(), Card::Jack => "Jack".into(), Card::Numbered(value, suit) => format!("{} of {}", value, suit), }.into()}
use std::fmt::format;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(val, suit) => format!("{} of {}", val, 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(card_value, suit) => format!("{} of {}", card_value, suit) }}
pub enum Card { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => { return "King".to_string(); } Card::Queen => { return "Queen".to_string(); } Card::Jack => { return "Jack".to_string(); } Card::Numbered(num,suit) => { return 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 { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), // Card::Numbered(value, suit) => "".to_string().push_str(value as &str).push_str(" of ").push_str(suit) //Card::Numbered(value, suit) => String::from(char::from(*value)) + " of " + suit //Card::Numbered(value, suit) => (char::from(*value)).to_string() + " of " + suit 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, suit) => format!("{} of {}", n.to_string(), 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 { 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) => format!("{v} of {s}"), }}
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(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(v, c) => format!("{} of {}", v, c), }}
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(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 { match card { Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".to_string(), Card::Numbered(n, suit) => format!("{} of {}", n.to_string(), 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!("{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(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 { 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(value, suit) => format!("{value} of {suit}"), }}