chore: avoid cloning entity id

This commit is contained in:
2026-03-16 11:02:42 +01:00
parent e98f6b7edf
commit cb3d07ec26
6 changed files with 9 additions and 9 deletions

View File

@@ -46,7 +46,7 @@ impl From<Entity> for Product {
// Create a new `Product` from the entity's attributes. // Create a new `Product` from the entity's attributes.
Self { Self {
// Set the product's ID from the entity's ID. // Set the product's ID from the entity's ID.
id: value.id(), id: value.id().to_string(),
// Unwrap the "name" attribute to get the product's name. // Unwrap the "name" attribute to get the product's name.
name: value.unwrap("name").expect("name is always present"), name: value.unwrap("name").expect("name is always present"),
// Unwrap the optional "model" attribute to get the product's model. // Unwrap the optional "model" attribute to get the product's model.

View File

@@ -37,7 +37,7 @@ impl From<Entity> for Component {
// `from` is a function that converts an `Entity` into a `Component`. // `from` is a function that converts an `Entity` into a `Component`.
fn from(value: Entity) -> Self { fn from(value: Entity) -> Self {
Self { Self {
id: value.id(), id: value.id().to_string(),
part_number: value part_number: value
.unwrap("part_number") .unwrap("part_number")
.expect("part_number is always present"), .expect("part_number is always present"),

View File

@@ -41,18 +41,18 @@ impl From<Entity> for Product {
if let Some(ref subclass) = value.subclass() { if let Some(ref subclass) = value.subclass() {
match subclass.as_ref() { match subclass.as_ref() {
"laptop" => Product::Laptop(Laptop { "laptop" => Product::Laptop(Laptop {
id: value.id(), id: value.id().to_string(),
model: value.unwrap("model").expect("model is mandatory"), model: value.unwrap("model").expect("model is mandatory"),
price: value.unwrap("price").expect("price is mandatory"), price: value.unwrap("price").expect("price is mandatory"),
}), }),
"display" => Product::Display(Display { "display" => Product::Display(Display {
id: value.id(), id: value.id().to_string(),
model: value.unwrap("model").expect("model is mandatory"), model: value.unwrap("model").expect("model is mandatory"),
price: value.unwrap("price").expect("price is mandatory"), price: value.unwrap("price").expect("price is mandatory"),
resolution: value.unwrap("resolution").expect("resolution is mandatory"), resolution: value.unwrap("resolution").expect("resolution is mandatory"),
}), }),
"mouse" => Product::Mouse(Mouse { "mouse" => Product::Mouse(Mouse {
id: value.id(), id: value.id().to_string(),
model: value.unwrap("model").expect("model is mandatory"), model: value.unwrap("model").expect("model is mandatory"),
price: value.unwrap("price").expect("price is mandatory"), price: value.unwrap("price").expect("price is mandatory"),
wireless: value.unwrap("wireless").expect("wireless is mandatory"), wireless: value.unwrap("wireless").expect("wireless is mandatory"),

View File

@@ -73,7 +73,7 @@
//! //!
//! fn try_from(entity: Entity) -> Result<Self, Self::Error> { //! fn try_from(entity: Entity) -> Result<Self, Self::Error> {
//! Ok(Self { //! Ok(Self {
//! id: entity.id(), //! id: entity.id().to_string(),
//! name: entity.unwrap("name").map_err(|_| FailedTo::ConvertEntity)?, //! name: entity.unwrap("name").map_err(|_| FailedTo::ConvertEntity)?,
//! price: entity.unwrap("price").map_err(|_| FailedTo::ConvertEntity)?, //! price: entity.unwrap("price").map_err(|_| FailedTo::ConvertEntity)?,
//! in_stock: entity.unwrap("in_stock").map_err(|_| FailedTo::ConvertEntity)?, //! in_stock: entity.unwrap("in_stock").map_err(|_| FailedTo::ConvertEntity)?,

View File

@@ -195,8 +195,8 @@ impl Entity {
.map(|value| value.unwrap_or(default)) .map(|value| value.unwrap_or(default))
} }
/// Returns the ID of the entity. /// Returns the ID of the entity.
pub fn id(&self) -> String { pub fn id(&self) -> &str {
self.id.clone() &self.id
} }
/// Returns the subclass of the entity, if it has one. /// Returns the subclass of the entity, if it has one.
pub fn subclass(&self) -> Option<String> { pub fn subclass(&self) -> Option<String> {

View File

@@ -48,7 +48,7 @@ impl From<Item> for Entity {
impl From<Entity> for Item { impl From<Entity> for Item {
fn from(entity: Entity) -> Self { fn from(entity: Entity) -> Self {
Self { Self {
id: entity.id(), id: entity.id().to_string(),
first_seen: entity.ref_date.expect("ref date is always present"), first_seen: entity.ref_date.expect("ref date is always present"),
name: entity.unwrap("name").expect("name is always present"), name: entity.unwrap("name").expect("name is always present"),
price: entity.unwrap("price").expect("price is always present"), price: entity.unwrap("price").expect("price is always present"),