// 매크로를 사용하여 두 벡터의 덧셈을 수행하는 함수를 작성합니다.
macro_rules! add_vectors {
    ($vec1:expr, $vec2:expr) => {
        add_vectors_unsafe(&$vec1, &$vec2)
    };
}
fn main() {
    let vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];
    let result = add_vectors!(vec1, vec2);
    println!("벡터 덧셈 결과: {:?}", result);
}
fn add_vectors_unsafe(vec1: &[i32], vec2: &[i32]) -> Vec<i32> {
    // 벡터의 길이가 같은지 확인합니다.
    assert_eq!(vec1.len(), vec2.len());
    let mut result = Vec::with_capacity(vec1.len());
    // unsafe를 사용하여 벡터의 내부 데이터에 접근하고 값을 더합니다.
    let ptr1 = vec1.as_ptr();
    let ptr2 = vec2.as_ptr();
    for i in 0..vec1.len() {
        unsafe {
            result.push(*ptr1.add(i) + *ptr2.add(i));
        }
    }
    result
}