두 벡터를 더하는 간단한 Rust 프로그램

발행: (2026년 2월 5일 오후 10:20 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

선형대수는 현대 컴퓨팅의 근간입니다. GPU는 벡터 덧셈을 이용해 실시간 3D 렌더링에서 픽셀 위치와 조명을 계산합니다. 마찬가지로 LLM은 단어를 고차원 벡터(임베딩)로 표현하고, 수학적 연산을 통해 의미적 관계를 판단합니다.

Note: 선형대수는 매우 빨리 추상화됩니다. 3Blue1Brown의 이 영상은 해당 주제에 대한 최고의 입문 중 하나입니다:
https://www.youtube.com/watch?v=fNk_zzaMoSs&t=309s

두 벡터를 더하는 Rust 프로그램

use std::io::{self, Write};

fn main() {
    let vec1 = get_vec("Enter first vector (x,y): ");
    let vec2 = get_vec("Enter second vector (x,y): ");
    println!("Result: ({}, {})", vec1.0 + vec2.0, vec1.1 + vec2.1);
}

fn get_vec(msg: &str) -> (f32, f32) {
    print!("{}", msg);
    io::stdout().flush().unwrap();
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let coords: Vec = input
        .split(',')
        .map(|s| s.trim().parse().unwrap_or(0.0))
        .collect();
    (coords[0], coords[1])
}

파일을 add_vectors.rs 이름으로 저장합니다.

프로그램 컴파일

rustc add_vectors.rs

프로그램 실행

./add_vectors

샘플 상호작용

Enter first vector (x,y): 1,2
Enter second vector (x,y): 3,-1
Result: (4, 1)

그래프 용지에 이 과정을 복제하면 과정을 시각화하고 이해를 돕는 데 도움이 됩니다.

Rust 상세 분석: 라인별

use std::io::{self, Write};

I/O 트레이트를 가져옵니다. Write는 버퍼를 플러시하여 프롬프트가 즉시 표시되도록 하는 데 필요합니다.

fn main() { ... }

프로그램 실행이 시작되는 표준 진입점입니다.

let vec1 = ...let vec2 = ...

변수 바인딩. let은 불변 바인딩을 생성하며, get_vec이 반환한 벡터를 잡아냅니다.

println!(...)

선언적 매크로(!에 주의)로, 포맷된 텍스트를 콘솔에 출력합니다. {}는 값이 들어갈 자리표시자입니다.

fn get_vec(msg: &str) -> (f32, f32)

두 개의 32비트 부동소수점 숫자를 튜플로 반환하는 헬퍼 함수의 시그니처입니다.

프롬프트를 출력하고 바로 stdout을 플러시하여 사용자가 입력을 입력하기 전에 화면에 보이게 합니다.

io::stdin().read_line(&mut input).unwrap();

표준 입력으로부터 한 줄을 가변 String에 읽어들입니다. &mut은 함수가 변수 값을 수정하도록 허용합니다. unwrap()은 읽기에 실패하면 패닉을 일으킵니다.

input.split(',').map(...).collect();

입력을 콤마(,) 기준으로 나누는 이터레이터를 만들고, 각 조각을 트림한 뒤 f32로 파싱하고, 결과를 Vec에 수집합니다.

parse().unwrap_or(0.0)

트림된 문자열 슬라이스를 부동소수점으로 변환을 시도합니다. 파싱에 실패하면 패닉 대신 0.0을 반환합니다.

(coords[0], coords[1])

벡터의 첫 두 요소를 튜플로 반환하여 (x, y) 좌표를 나타냅니다.

Back to Blog

관련 글

더 보기 »

클래스와 상속

!Lahari Tennetihttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads...

JavaScript 객체와 메서드

객체에서 메서드란 무엇인가? 메서드는 객체 내부에 존재하는 함수이다. 객체를 도구 상자에 비유하면, 메서드는 그 안에 들어 있는 도구와 같다. javasc...