기존 코드
pub fn summary(ticket: Ticket) -> (Ticket, Summary) {
(ticket, ticket.summary())
}
pub struct Ticket {
pub title: String,
pub description: String,
pub status: String,
}
impl Ticket {
pub fn summary(self) -> Summary {
Summary {
title: self.title,
status: self.status,
}
}
}
풀이
pub fn summary(ticket: Ticket) -> (Ticket, Summary) {
(ticket.clone(), ticket.summary())
}
#[derive(Clone)]
pub struct Ticket {
pub title: String,
pub description: String,
pub status: String,
}
함수 summary()
는 Ticket
타입 ticket
을 받아서 (Ticket, Summary)
를 반환한다.
함수 내부에서 튜플을 반환하는데, 매개변수로 받은 ticket
을 첫번째 요소로 사용했으므로 두번째 요소로 ticket.summary()
를 사용할 수 없다. 이미 값이 이동되었기 때문이다.
Ticket
타입에 #[derive(Clone)]
을 명시해 Clone
을 구현하고, 자신을 복제한 clone()
을 반환하도록 하여 해결한다.