100 Exercises To Learn Rust - 3.10 references in memory 풀기

목차
pub struct Ticket {
    title: String,
    description: String,
    status: String,
}

// TODO: `todo!()`를 올바른 **스택 크기**로 수정하세요.
#[cfg(test)]
mod tests {
    use super::Ticket;
    use std::mem::size_of;

    #[test]
    fn u16_ref_size() {
        assert_eq!(size_of::<&u16>(), todo!());
    }

    #[test]
    fn u64_mut_ref_size() {
        assert_eq!(size_of::<&mut u64>(), todo!());
    }

    #[test]
    fn ticket_ref_size() {
        assert_eq!(size_of::<&Ticket>(), todo!());
    }
}

 

풀이:

pub struct Ticket {
    title: String,
    description: String,
    status: String,
}

// TODO: `todo!()`를 올바른 **스택 크기**로 수정하세요.
#[cfg(test)]
mod tests {
    use super::Ticket;
    use std::mem::size_of;

    #[test]
    fn u16_ref_size() {
        assert_eq!(size_of::<&u16>(), 8);
    }

    #[test]
    fn u64_mut_ref_size() {
        assert_eq!(size_of::<&mut u64>(), 8);
    }

    #[test]
    fn ticket_ref_size() {
        assert_eq!(size_of::<&Ticket>(), 8);
    }
}

 

참조는 포인터의 크기만 가지므로, 어떤 데이터를 가리키든 참조 자체의 크기는 usize, 64비트 머신에서 8과 동일하다.