// TODO: Ticket 구조체의 각 필드에 대여-가변 설정자(&mut-setter)를 추가하세요.// `Ticket::new`와 동일한 조건을 준수하세요.// 동일한 로직을 추출해 재사용하면 더 좋습니다.// 비공개(private) 함수나 비공개 정적(static) 메서드를 사용할 수 있습니다.풀이:impl Ticket { pub fn new(title: String, description: String, status: String) -> Ticket { //조건 검사 로직은 필드 별로 분리 check_title(&title); check_description(&description); check_status(&status); ..
3.5 절의 접근자를 대여를 활용하도록 수정한다. pub fn title(&self) -> &String { &self.title } pub fn description(&self) -> &String { &self.description } pub fn status(&self) -> &String { &self.status } 대여(&)하지 않고 사용하게 되면 소유권이 접근자로 이전되므로, 접근자가 호출된 이후에 반환한 값을 사용하려 하면 호출한 코드는 소유권을 돌려받지 못해 사용할 수 없게 된다.
impl Ticket { pub fn new(title: String, description: String, status: String) -> Ticket { if title.is_empty() { panic!("Title cannot be empty"); } if title.len() > 50 { panic!("Title cannot be longer than 50 bytes"); } if description.is_empty() { panic!("Description cannot be empty"); ..
// TODO: **예외적으로**, 이 연습에서는 ticket과 test 모듈을 모두 수정할 수 있습니다.#[cfg(test)]mod tests { // TODO: 아래의 구문에 발생하는 컴파일러 오류를 제거하기 위해 `pub` modifier를 부모 모듈에 추가하세요. use super::ticket::Ticket; // 조심하세요! use statement를 컴파일할 수 있도록 가시성(visibility)을 바꾼 다음 // 이 함수가 컴파일되는 건 원하지 않습니다! // 실제로 컴파일되지 않는지 확인했다면 주석 처리하세요. fn should_not_be_possible() { let ticket = Ticket::new("A title".into(), "A..
mod helpers { // TODO: `use` 구문을 추가하거나 `Ticket` 구조체를 가리키는 적절한 경로를 사용해 // 이 코드를 컴파일되도록 하세요. fn create_todo_ticket(title: String, description: String) -> Ticket { Ticket::new(title, description, "To-Do".into()) }}struct Ticket { title: String, description: String, status: String,}impl Ticket { fn new(title: String, description: String, status: String) -> Ticket { ..
struct Ticket { title: String, description: String, status: String,}impl Ticket { //Todo: `new()` 함수를 구현합니다. // - `할 일`, `진행 중`, `완료` 상태만 허용됩니다. // - `제목`과 `설명` 필드가 비어 있지 않아야 합니다. // - 제목`은 최대 50바이트 길이여야 합니다. // - `설명`은 최대 500바이트 길이여야 합니다. // 테스트에서 필요한 패닉 메시지를 찾을 수 있습니다. // 이전 연습에서 배운 내용( )과 일부 `String` 메서드를 사용해야 합니다. // 가장 적합한 옵션을 찾으려면 Rust의 표준 라이브러리 문서를 //..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.