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 { 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!("{:?} 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 => 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(val,name) => format!("{} of {}", val, 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!("{} of {}", value, suit) }}
pub enum Card { // Define the Card variants here King, Queen, Jack, Numbered(u8, String),}// impl Card {// pub fn Numbered(n: u8, name: 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, name) => format!("{} of {}", val, 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(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 { // 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!("{value} of {suit}"), }}
// Define the Card enum with the specified variantspub enum Card { King, Queen, Jack, Numbered(u8, String), // Represents a numbered card with its value and suit}// Function to return a description of the cardpub fn card_description(card: &Card) -> String { // Match the Card variant and return the corresponding description 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), // Use format! to create the description }}// Example usagefn main() { let king_card = Card::King; let queen_card = Card::Queen; let jack_card = Card::Jack; let numbered_card = Card::Numbered(7, "Hearts".to_string()); println!("King card: {}", card_description(&king_card)); // Output: King println!("Queen card: {}", card_description(&queen_card)); // Output: Queen println!("Jack card: {}", card_description(&jack_card)); // Output: Jack println!("Numbered card: {}", card_description(&numbered_card)); // Output: 7 of Hearts}
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!("{value} of {suit}").to_string() }}
pub enum Card { Numbered(u8, String), King, Queen, Jack,}pub fn card_description(card: &Card) -> String { match card { Card::Numbered(value, suit) => format!("{} of {}", value, suit), Card::King => "King".to_string(), Card::Queen => "Queen".to_string(), Card::Jack => "Jack".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 { 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!("{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}").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 => "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 { // 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 { 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(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) => (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) => 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 { King, Queen, Jack, Numbered(u8, String)}pub fn card_description(card: &Card) -> String { match card { Card::King => "King".into(), Card::Queen => "Queen".into(), Card::Jack => "Jack".into(), 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(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 => "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), }}