Rust(15) – if let & let else

if let match는 enum형 전체를 커버해준다면, if let은 반대로 특정 조건일때만 실행이 되도록 하는 코드입니다. 아래 예제는 config_max 변수가 None이 아니라 Some의 변형이고 그안에 값이 있다면, 그값을 max에 대입해서 블럭안의 코드를 실행시켜라 라는뜻입니다. 즉 u8타입의 정수 3이 됩니다. if let 키워드도 일반 if문처럼 마지막에 else { } 구문을 추가하여 config_max의 다른값을 처리할수있습니다. (optional)

Rust(14) – match

다른언어의 switch 문을 대체하는 Rust 문법. 지난시간에 enum에 대해서 배웠는데, match를사용해 어떻게 분류하는지 알아봅니다. Rust는 이렇게 match를 사용할때 enum Coin의 모든 값을 다 cover 해야합니다. 하나라도 빼놓으면 에러가 나는데 컴파일러가 잡아주고, 어떤 값을 빼먹었는지도 친절하게 알려줍니다. Catch-All 패턴과 _ Placeholder enum – match 사용 시, 모든 케이스에대해 일일히 처리하고싶지 않은경우도 있습니다. 이럴때는 캐치올 패턴이나 _를 … 더 읽기

Rust(13) Enum / Enumeration 열거형

Rust의 enum은 매우 특별합니다. C++과 파이썬처럼 단순히 열거하고 0,1,2,3 순서대로 구분만하는것을 뛰어넘어 실제로 다양한 데이터를 저장할수있습니다. 다른언어와 차별점이 크기때문에 꼭 공부하고 넘어가야할 부분입니다. Enum 기본 기능 우선 기본기능이자 다른언어의 enum과 같은방식으로 사용할때 예시를 보겠습니다. 이렇게 선언해두면 이런식으로 변수에 저장할수있고 필요한경우 V4인지 V6인지 구분이 가능하며 실제 ip주소 구조체를 만들경우 아래처럼 사용될수있습니다. 매개변수에서 int나 String 대신 IpAddrKind … 더 읽기

Rust(12) – Struct 구조체 ≈ class (다른언어)

C++은 구조체도 있고, 클래스도 따로있습니다. 요즘은 구조체도 멤버함수가있고 클래스의 은닉성만 갖고있지 않는걸로 알고있는데, Rust에서는 class가 따로 존재하지 않습니다. 먼저 C++과 Rust를 비교해보면 Rust는 아래 표와같이 C++기능을 대응하고있습니다. C++은 구조체와 클래스를 구분해놓고 클래스가 좀더 많은 기능을 지원하는 정도의 차이만 있습니다. Rust의 구조체는 C++의 구조체와 기본기능이 더 가깝다고 할수있지만 추가 키워드를 활용해 C++에서 할수있는 기능들을 대응하고있습니다. Rust … 더 읽기

OpenJarvis + Gemma 4.0 (추가)

오픈자비스는 2026년 3월 옥스퍼드 대학교에서 배포한 오픈소스 AI비서입니다. 오픈자비스는 아래 주소에 소스코드가 공개되어있다. https://github.com/open-jarvis/OpenJarvis 비교를 위한 기타 AI비서 프로그램 목록 OpenJarvis 설치 OpenJarvis는 Rust를 사용해 만들어졌기때문에 운영체제 관련없이 설치하면되지만 먼저 Rust가 설치되어 있어야한다. rustup 필요 https://rustup.rs rustup이 설치가 되어있지 않다면 링크로가서 안내되있는대로 설치하면된다. uv 필요 (파이썬 패키지 관리자) uv 사용법 OpenJarvis 실행 만약 모델 선택이 … 더 읽기

파이썬 예외처리 (C++과 차이점)

파이썬에서 예외처리 방법에대해 정리해보고자 합니다. 제 메인 언어는 C++인데 파이썬은 C++과 다소 다른부분이 있어서 다른부분을 짚어보고, 파이썬 예외처리 제대로 사용하는방법을 알아보려 합니다. C++ 예외처리 C++ 에서는 아래코드처럼 try catch가 전부이고 문법구조가 간단하기때문에 사용법도 간단합니다. 물론 코드가 길어지는 단점은 있습니다. C++은 아래처럼 사용합니다. Python 예외처리 파이썬은 try: exception: 의 C++ 의 try, catch에 대응하는 기능인데, 이 … 더 읽기

Rust(11) Loop 반복문

러스트의 반복문 특징 loop 라벨링 loop 반복문의겨우 아래 코드처럼 ‘를 사용해 라벨링이 가능하다. 라벨링을 사용해서 inner loop에서 outer loop를 break 한번에 빠져 나올수있다. while (조건식 필수) while 루프는 C++이나 JS등 다른언어와 크게 다르지않다. for (배열 순회) for 은 다음처럼 사용하면 배열의 아이템들을 한번씩 순회할수 있다. for + rev() rev()는 리버스의 줄임말로 배열 내 숫자를 1, … 더 읽기

Rust(10) – Ownership

Ownership은 러스트 언어의 핵심 개념입니다. 이것만 알아도 Rust를 알수 있다 할수 있습니다. 가비지 콜렉터도 없지만 C++의 포인터처럼 복사를 최소화하여 성능을 극대화 시킬수있는 새로운 개념입니다. 많은 프로그래머들에게는 생소할수있지만 사실 개념자체는 이미 오래전에 만들어지고 C++에서도 스마트포인터라는 이름으로 20여년전부터 많이 쓰이는 방식이긴 합니다. 문제는 C++에서 이 방식을 사용할경우 변수선언에 코드가 지나치게 길어지기도 해서 일반변수에는 잘안쓰고 class 객체위주로 사용하는 … 더 읽기

Rust(9) Functions

함수 형태 매개변수 타입 명시해야함. Statements and Expressions Statement: 하나의 명령줄 “let y = 6;” Expression Return 함수의 반환값은 위의 expression에서 처럼 ; 세미콜론 없이 마지막줄에 작성한다. Rust에서는 아래코드의 -> i32 와 반환타입이 i32라는것을 명시해야한다. five 함수 내의 5를 return expression 이라 한다.

Rust(8) Data Type

Scalar Types Scalar는 고정된 메모리를 갖고있으며 1개의 값을 저장하는 종류. Integer 타입의 작동방식은 C++과 동일하다. 특징이있다면 Rust에서는 배열인덱싱에서 usize를 써야함. Compound Types Tuple Rust에서 튜플은 다양한 데이터타입도 한곳에 묶을수있다. 분리할땐 아래처럼 사용한다. 사용 용도로는 어떤 데이터셋을 한번에 함수에서 return하거나 매개변수로 받을 때, 클래스 선언하지않고 받을때 사용. Array 배열 배열은 다른 스칼라타입 변수처럼 스택메모리를 이용합니다. 배열은 … 더 읽기