Enums can be useful to compare different states of a type, for example if status == OrderStatus::Pending
. However, you can not directly compare two enums for equality.
For this to work, you need to implement the PartialEq
trait for the enum.
This can be done manually, but Rust provides a convenient way to implement the PartialEq
trait for types using the derive
attribute. This allows you to compare instances of a type for equality without manually implementing the trait.
In this challenge, you'll define a simple enum and use #[derive(PartialEq)]
to automatically implement equality checks.
Define an enum OrderStatus
with the following variants:
Pending
— a unit variant representing an order that is not yet processed.Shipped
— a unit variant representing an order that has been shipped.Cancelled(String)
— a tuple variant with a reason for cancellation.Use the #[derive(PartialEq)]
attribute to derive the PartialEq
trait for the enum.
Write tests to ensure that the derived implementation works as expected.
#[derive(PartialEq)]
macro for the OrderStatus
enum.derive
macro on the enum to automatically implement PartialEq
.PartialEq
, so Cancelled(String)
can be compared automatically.// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq)] #[derive(Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq)]#[derive(Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq,Debug)]pub enum OrderStatus { Pending, // Unit variant representing an order that is not yet processed Shipped, // Unit variant representing an order that has been shipped Cancelled(String), // Tuple variant with a reason for cancellation}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}impl PartialEq for OrderStatus { fn eq(&self, other: &Self) -> bool { match (self, other) { (OrderStatus::Pending, OrderStatus::Pending) => true, (OrderStatus::Shipped, OrderStatus::Shipped) => true, (OrderStatus::Cancelled(reason1), OrderStatus::Cancelled(reason2)) => reason1 == reason2, _ => false, } }}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq)]#[derive(Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(PartialEq,Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq)]#[derive(Debug)]pub enum OrderStatus { Pending , Shipped , Cancelled(String) }// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Cancelled(String), Shipped}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq)]#[derive(Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}#[cfg(test)]mod tests { use super::*; #[test] fn pending_equals_pending() { assert_eq!(OrderStatus::Pending, OrderStatus::Pending); } #[test] fn shipped_equals_shipped() { assert_eq!(OrderStatus::Shipped, OrderStatus::Shipped); } #[test] fn cancelled_equals_cancelled_if_reason_matches() { assert_eq!(OrderStatus::Cancelled("you suck".to_string()), OrderStatus::Cancelled("you suck".to_string())); assert_ne!(OrderStatus::Cancelled("you suck".to_string()), OrderStatus::Cancelled("no u".to_string())); }}
#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq,Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}pub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq,Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String) }// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Shipped, Pending, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq,Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String) }// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}
// Finish the enum definition#[derive(Debug,PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug,PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(PartialEq)]#[derive(Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
#[derive(Debug, PartialEq)]pub enum OrderStatus { Pending, Shipped, Cancelled(String),}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq)]#[derive(Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}
// Finish the enum definition#[derive(PartialEq, Debug)]pub enum OrderStatus { Pending, Shipped, Cancelled(String)}// Example use casepub fn main() { let status1 = OrderStatus::Pending; let status2 = OrderStatus::Pending; assert_eq!(status1, status2); let cancelled1 = OrderStatus::Cancelled("Out of stock".to_string()); let cancelled2 = OrderStatus::Cancelled("Out of stock".to_string()); assert_eq!(cancelled1, cancelled2); let cancelled3 = OrderStatus::Cancelled("Customer request".to_string()); assert_ne!(cancelled1, cancelled3);}