<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>teddy_rs.log</title>
        <link>https://velog.io/</link>
        <description>rust 블로거입니다.</description>
        <lastBuildDate>Thu, 16 Mar 2023 01:33:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>teddy_rs.log</title>
            <url>https://velog.velcdn.com/images/teddy_rs/profile/1d03f555-3ff2-4e5d-a2c7-1aad2bb5bcde/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. teddy_rs.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/teddy_rs" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[2023년 취업 준비 & 공부]]></title>
            <link>https://velog.io/@teddy_rs/2023%EB%85%84-%EC%B7%A8%EC%97%85-%EC%A4%80%EB%B9%84-%EA%B3%B5%EB%B6%80</link>
            <guid>https://velog.io/@teddy_rs/2023%EB%85%84-%EC%B7%A8%EC%97%85-%EC%A4%80%EB%B9%84-%EA%B3%B5%EB%B6%80</guid>
            <pubDate>Thu, 16 Mar 2023 01:33:13 GMT</pubDate>
            <description><![CDATA[<h3 id="취업이-예정-되었다">취업이 예정 되었다.</h3>
<p>지금은 2023년 3월 중순이다.
4개월간 여러 회사에 입사지원하고 있었고, 4월 3일 스타트업으로 합격이 되었다.</p>
<p>원티드에 많은 회사에 지원을 하였다.
작년 다른 회사에 지원한 숫자 120개 정도를 제외하면 
이번에는 거의 140군데의 회사에 지원한 것 같다.</p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/d6123cc6-dee8-4ccc-8e0a-e7a81371aeee/image.png" alt="">
<del>최종합격 1건, 불합격 120건은 이전에 합격했던 회사이다.</del></p>
<p>이번 회사에서는 msa기반 서비스를 만드는 플랫폼 회사이며, (2021년에 창립)
이곳에서 서비스설계(기획 설계), infra(아마?), api 개발 업무를 하게 되었다.</p>
<p>spring(모놀리스), golang, node, rust 정도 사용하여 api 를 container as a service 로 구현하지 않을까 싶다.
관련 책들과 CNCF 를 많이 찾아보아야 한다.</p>
<hr>
<h3 id="현재-하는-일">현재 하는 일</h3>
<p>현재는 msa 를 하기위해 cloud native 공부를 하고 있고
front end 부담을 덜기위한 자료찾기 + 개인연구도 하고 있다.</p>
<p>api 를 분산 네트워크 환경에서 구현하는 방법을 공부하며 여러 기술팀 블로그와
cncf 자료, cloud native 책을 공부한다.</p>
<p>이외 시간은 프론트엔드에게 api 를 전달하기위한 문서, openApi(swagger)/graphql 를 고민하고 있다.. </p>
<p>위 문제를 고민하다가 wasm 으로 해결할 수 있지 않을까?</p>
<p>하면서 mdn 에서 wasm 에 대한 자료를 공부하며 개인적으로 정리하고 있다.</p>
<hr>
<h3 id="앞으로-할-일">앞으로 할 일</h3>
<p>rust 베이스로 wasm 을 만들어 api 를 사용하고,
document 자동화를 만들어 문서기반의 의사소통을 이끌어내는 역량을 키워보고 싶다.</p>
<p>wasm 도 처음해보니 &quot;api 의 dto 에 대한 validate 도 통일 할 수 있지않을까?&quot;
하는 아이디어도 생기는데, 여러모로 책도 사서 공부하고 좋은 시간을 보내고 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[책) 프로그래밍 러스트]]></title>
            <link>https://velog.io/@teddy_rs/%EC%B1%85-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%9F%AC%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@teddy_rs/%EC%B1%85-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%9F%AC%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Wed, 15 Mar 2023 08:21:37 GMT</pubDate>
            <description><![CDATA[<p>이번에 Programming Rust 2nd Edition 을 구매했다.
830 페이지에 배우고 싶은 문법과 패턴, advice 가 잔뜩있다.
이번주가 끝나기 까지 최대한 체득할 것이다.</p>
<p>책 링크:
<a href="http://www.yes24.com/Product/Goods/116789691">http://www.yes24.com/Product/Goods/116789691</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-7. 구조체]]></title>
            <link>https://velog.io/@teddy_rs/rs-7.-%EA%B5%AC%EC%A1%B0%EC%B2%B4</link>
            <guid>https://velog.io/@teddy_rs/rs-7.-%EA%B5%AC%EC%A1%B0%EC%B2%B4</guid>
            <pubDate>Mon, 13 Mar 2023 13:15:55 GMT</pubDate>
            <description><![CDATA[<p><a href="https://doc.rust-lang.org/beta/book/ch05-00-structs.html">https://doc.rust-lang.org/beta/book/ch05-00-structs.html</a></p>
<p>구조체는 사용자 정의 타입이다.
관련된 여러 값의 이름을 정의하고, 관련 fn 인 method 를 정의한다.</p>
<p>java나 javascript 의 class 와 비슷하다.</p>
<pre><code class="language-rust">struct User {
    active: bool,
    username: String,
    email: String,
    sign_in_count: u64,
}</code></pre>
<p>User 라는 타입을 만들고</p>
<pre><code class="language-rust">fn main() {
    let user1 = User {
        active: true,
        username: String::from(&quot;someusername123&quot;),
        email: String::from(&quot;someone@example.com&quot;),
        sign_in_count: 1,
    };
}</code></pre>
<p>사용한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-6. 소유권]]></title>
            <link>https://velog.io/@teddy_rs/rs-6.-%EC%86%8C%EC%9C%A0%EA%B6%8C</link>
            <guid>https://velog.io/@teddy_rs/rs-6.-%EC%86%8C%EC%9C%A0%EA%B6%8C</guid>
            <pubDate>Mon, 13 Mar 2023 11:23:37 GMT</pubDate>
            <description><![CDATA[<p><a href="https://doc.rust-lang.org/beta/book/ch04-00-understanding-ownership.html">https://doc.rust-lang.org/beta/book/ch04-00-understanding-ownership.html</a></p>
<p>rust 핵심 소유권을 간단하게 알아보자.</p>
<pre><code class="language-rust">fn main() {
    let s1 = String::from(&quot;hello&quot;);
    let s2 = s1;

    println!(&quot;{}, world!&quot;, s1);
}</code></pre>
<p>이 코드를 실행하면 에러가 발생한다.</p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/39e0118b-f151-450d-8f9f-decdaa294d9f/image.png" alt=""></p>
<p>3번째 라인, let s2 = s1; 에서 발생한 오류인데,
value 가 이미 이동(move) 했다는 메시지다.
s1 는 소유권이 이동되었고, 사용할 수 없다는 뜻이다.</p>
<h2 id="소유권-규칙">소유권 규칙</h2>
<p>Rust 는 아래 규칙을 가진다.</p>
<ol>
<li>rust 의 각 value 는 소유자가 있다.</li>
<li>한 번에 한 명의 소유자만 있다.</li>
<li>소유자가 범위를 벗어나면 값이 삭제된다.</li>
</ol>
<p>따라서 </p>
<pre><code class="language-rust">{
    let s = &quot;hello&quot;; // s 는 소유권을 가진다.
}
// 여기서 위 스코프의 s 값은 삭제되어있다.(deleted)</code></pre>
<p>위처럼 변수 s 는 보이지 않지만 소유권을 가지고 있다.</p>
<pre><code class="language-rust">{
    let A = 10; // A 는 소유권을 가진다.
    let B = A; // A의 소유권을 B가 가지며, A는 참조할 수 없게된다.
}
// 여기서 위 스코프의 A, B 값은 삭제되어있다.(deleted)</code></pre>
<h2 id="이동move">이동(move)</h2>
<p>rust 에서 소유권을 주는 행위를 &#39;move&#39;라고 표현한다.</p>
<pre><code class="language-rust">let A = 10;
let B = A; // A의 소유권 이동</code></pre>
<p>위의 표현을 아래처럼 해석한다.</p>
<pre><code>A 에 10 리터럴을 할당하고 소유권을 부여한다.
B 에 A를 할당하며, A의 소유권을 이동시킨다.</code></pre><p>이동된(moved) 변수는 더 이상 사용할 수 없다.
변수 A를 다시 사용할때, Rust 가 참조를 사용하지 못하게 한다.</p>
<p>소유권 규칙 2번이 적용된다. (한 번에 한 명의 소유자만 있다.)
A는 소유권을 잃게되며 동시에 B가 소유권을 가진다.</p>
<p>위 개념은 간단한 설명이며 오해할 수 있다.
rust 로 무언가를 하려면 깊게 알고 있어야 좋다.</p>
<p>이를 이해하기 위해서 문서를 직접 읽어보고 직접 타이핑해보자.</p>
<p><a href="https://doc.rust-lang.org/beta/book/ch04-01-what-is-ownership.html#what-is-ownership">https://doc.rust-lang.org/beta/book/ch04-01-what-is-ownership.html#what-is-ownership</a></p>
<h2 id="참조references">참조(references)</h2>
<p>기존 변수의 소유권을 주지 않고 값 만 &#39;참조&#39;하는 방법이다.</p>
<p>&amp;를 사용해보자.</p>
<pre><code class="language-rust">fn main() {
    let s1 = String::from(&quot;hello&quot;);
    let s2 = &amp;s1;

    println!(&quot;{}, world!&quot;, s1);
}</code></pre>
<p>위 코드는 실행해도 에러없이 결과가 나온다.</p>
<p>s1 변수의 &#39;값&#39;을 &#39;참조&#39;만 시켜서 &#39;소유권&#39;을 이동시키지 않는다.</p>
<p>참조 또한 규칙이 있으며, </p>
<pre><code class="language-rust">let mut s = String::from(&quot;hello&quot;);
let r = &amp;mut s;
...</code></pre>
<p>위처럼 mut 변수로써 참조 할 수 있다.
<a href="https://doc.rust-lang.org/beta/book/ch04-02-references-and-borrowing.html#mutable-references">https://doc.rust-lang.org/beta/book/ch04-02-references-and-borrowing.html#mutable-references</a></p>
<p>소유권,참조 규칙과 에 의하여 댕글링 포인터 문제를 예방한다.</p>
<p><a href="https://doc.rust-lang.org/beta/book/ch04-03-slices.html">https://doc.rust-lang.org/beta/book/ch04-03-slices.html</a>
위 문서를 통해 참조로 구성된 collection 인 slice 를 공부하자.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-5. 기본 문법 2]]></title>
            <link>https://velog.io/@teddy_rs/rs-5.-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-2</link>
            <guid>https://velog.io/@teddy_rs/rs-5.-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-2</guid>
            <pubDate>Mon, 13 Mar 2023 10:41:29 GMT</pubDate>
            <description><![CDATA[<p><a href="https://doc.rust-lang.org/beta/book/ch03-05-control-flow.html">https://doc.rust-lang.org/beta/book/ch03-05-control-flow.html</a></p>
<h2 id="제어문-if">제어문 if</h2>
<p><a href="https://doc.rust-lang.org/beta/book/ch03-05-control-flow.html#if-expressions">https://doc.rust-lang.org/beta/book/ch03-05-control-flow.html#if-expressions</a></p>
<pre><code class="language-rust">if 조건 {
} else if 조건 {
} else {
}</code></pre>
<p>위 형태와 같다.</p>
<p>아래 특징이 있다.</p>
<ul>
<li>조건에서 ()같은 괄호가 필요없다.(필요할 때만 넣어주면 된다.)</li>
<li>bool 명시를 해줘야한다.</li>
</ul>
<pre><code class="language-rust">fn main() {
    let condition = true;
    let number = if condition { 5 } else { 6 };

    println!(&quot;The value of number is: {number}&quot;);
}</code></pre>
<p>이렇게 if 로 변수를 할당 가능하다.(삼항연산자 느낌이다.)</p>
<h2 id="반복문-loop-while-for">반복문 loop, while, for</h2>
<p><a href="https://doc.rust-lang.org/beta/book/ch03-05-control-flow.html#repetition-with-loops">https://doc.rust-lang.org/beta/book/ch03-05-control-flow.html#repetition-with-loops</a></p>
<p>다른 언어와 크게 다른게 없다.
생략한다.</p>
<pre><code class="language-rust">fn main() {
    for number in (1..4).rev() {
        println!(&quot;{number}!&quot;);
    }
    println!(&quot;LIFTOFF!!!&quot;);
}</code></pre>
<p>1부터 4미만의 수를 배열로 만든다.
해당 배열은 rev 는 reverse 약자로 해당 배열 순서를 역전한다.
이후 각 요소가 number 로 할당되며 반복된다.</p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/a29fa041-8ee3-48cd-b811-a9432c15048c/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-4. 기본 문법 1]]></title>
            <link>https://velog.io/@teddy_rs/rs-4.-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%951</link>
            <guid>https://velog.io/@teddy_rs/rs-4.-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%951</guid>
            <pubDate>Mon, 13 Mar 2023 09:23:31 GMT</pubDate>
            <description><![CDATA[<p><a href="https://doc.rust-lang.org/beta/book/ch03-01-variables-and-mutability.html">https://doc.rust-lang.org/beta/book/ch03-01-variables-and-mutability.html</a></p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/28bdc28d-124e-459f-90c8-dde42c740937/image.png" alt="">
문서볼때 이 친구가 있으면 컴파일 안되는게 정상이다.
문서를 읽다보면 가장 많이 보이는 이미지다.<strong>*(1)</strong>
(<a href="https://doc.rust-lang.org/beta/book/ch00-00-introduction.html#ferris">https://doc.rust-lang.org/beta/book/ch00-00-introduction.html#ferris</a>)</p>
<p>이 친구가 없는데도 컴파일이 안된다면 사용하던 lib 버전이 달라지며 생긴 문제다.</p>
<h2 id="변수-사용법-변수와-가변성">변수 사용법 (변수와 가변성)</h2>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/89b33d7a-8cf5-4fd4-9a50-4cf1eb9a48d5/image.png" alt=""></p>
<p>따라해보자</p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/7070f409-d8b8-4064-b0c9-7389bbfd7fe4/image.png" alt=""></p>
<p>&quot;Cannot ... variable&quot; 는 변경 할 수 없는 변수에 2번째로 값을 할당 할 수 없다는 뜻이다.</p>
<pre><code class="language-rust">fn main() {
    let mut x = 5;
    println!(&quot;The value of x is: {x}&quot;);
    x = 6;
    println!(&quot;The value of x is: {x}&quot;);
}</code></pre>
<p>let x = 5; 에서 let 뒤에 mut 를 넣으면 
변수가 mutable(가변) 이 된다.</p>
<p>rust 가 사용하는 변수는 default 로 immutable(불변)이라는 점을 알 수 있다.</p>
<p>Fp 스럽지 않은가?</p>
<h2 id="shadowing-그림자">Shadowing (그림자)</h2>
<p><a href="https://doc.rust-lang.org/beta/book/ch03-01-variables-and-mutability.html#shadowing">https://doc.rust-lang.org/beta/book/ch03-01-variables-and-mutability.html#shadowing</a></p>
<pre><code class="language-rust">fn main() {
    let x = 5;

    let x = x + 1; // let x = 5; 가 가려지고 새로운 x 는 6이 된다.

    {
        let x = x * 2; // 위와 같은 개념으로 6 * 2 값을 가진 x 가 {} 안에서 할당된다.
        println!(&quot;The value of x in the inner scope is: {x}&quot;);
    }
    // 바로 위의 {} 를 벗어나며 x 는 기존 6 으로 존재한다.
    println!(&quot;The value of x is: {x}&quot;);
}

// 결과
// The value of x in the inner scope is: 12
// The value of x is: 6</code></pre>
<p>섀도잉은 {} 범위 내에서 같은 이름의 변수를 만들며 기존 변수를 감춘다.
mut 를 굳이 안써도 되는 상황에 대체하기 좋은 방법이다.</p>
<p>mut 를 반드시 써야할때는</p>
<ul>
<li>변수가 fn 를 통해 변경되어야 함</li>
<li>반복문을 통해 변수가 만들어진 후, 변경되어야함.</li>
</ul>
<p>정도 되지 않을까?<strong>*(2)</strong></p>
<p>위 경우에도 섀도잉으로 짤 수는 있지만 가독성을 위해 mut 를 쓸 경우도 있어보인다.</p>
<h2 id="데이터-타입">데이터 타입</h2>
<p><a href="https://doc.rust-lang.org/beta/book/ch03-02-data-types.html#data-types">https://doc.rust-lang.org/beta/book/ch03-02-data-types.html#data-types</a></p>
<p>Rust 언어는 정적인 구조(&quot;동적&quot;의 반대)가 빠르다.
이는 데이터 타입도 정적일때 빠르다는 것을 말한다.</p>
<p>하지만 변수의 데이터 타입이 동적으로 할당되는 경우가 필요할 수 있다.
(입력 받은 string 배열 개수는 예측하지 않고 싶은 경우 등)</p>
<p>이런 경우, run-time 중에 메모리를 할당해야 하므로 정적인 구조(예측 가능한 수의 할당) 보다 느릴 수 밖에 없다.</p>
<p>개발자는 여러 요인을 생각하며 mut 나 동적 타입을 도입해야한다.</p>
<h2 id="functions">Functions</h2>
<p><a href="https://doc.rust-lang.org/beta/book/ch03-03-how-functions-work.html#functions">https://doc.rust-lang.org/beta/book/ch03-03-how-functions-work.html#functions</a></p>
<p>함수는 작성하기 쉽다.</p>
<pre><code class="language-rust">// 반환 없음
fn 함수이름(파라미터이름: 타입) {
    ...;
}
// 반환 있음
fn 함수이름(파라미터이름: 타입) -&gt; 리턴타입 {
    ...;
    리턴변수    // 세미콜론이 없다.
}</code></pre>
<p>위 형태다.</p>
<p>세미콜론이 없는 마지막 라인은 반환할 변수이다.</p>
<pre><code class="language-rust">fn main() {
    let x = plus_one(5);

    println!(&quot;The value of x is: {x}&quot;);
}

fn plus_one(x: i32) -&gt; i32 {
    x + 1    // 여기 뒤에 ; 붙이고 실행하면 i32를 return 안했다고 error 가 뜬다.
}</code></pre>
<p>실행해보면 잘 나온다.</p>
<h2 id="주석">주석</h2>
<p>주석을 이미 보여줬는데. 해당 line 뒤에 // 를 붙이면 된다.</p>
<hr>
<p><strong>*(1)</strong> rust 는 다른 언어보다 error 가 발생할 경우가 많다.
<strong>*(2)</strong> 진짜 추측이다. 정확히 모른다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-3. Cargo.toml]]></title>
            <link>https://velog.io/@teddy_rs/rs-3.-Cargo.toml</link>
            <guid>https://velog.io/@teddy_rs/rs-3.-Cargo.toml</guid>
            <pubDate>Mon, 13 Mar 2023 08:15:55 GMT</pubDate>
            <description><![CDATA[<p><a href="https://doc.rust-lang.org/beta/book/ch01-03-hello-cargo.html">https://doc.rust-lang.org/beta/book/ch01-03-hello-cargo.html</a></p>
<p>cargo 는 rust 에서 사용하는 패키지 매니저다.
javascript 의 npm, yarn 같은 포지션이다.</p>
<p>rust 에서 사용할 library 의 dependency, 패키지의 메타정보(이름, 버전 등)을 관리한다.</p>
<pre><code class="language-toml">[package]
name = &quot;hello_cargo&quot;
version = &quot;0.1.0&quot;
edition = &quot;2021&quot;

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]</code></pre>
<p>Cargo.toml 은 위 형태다. 
toml 포맷 참조: <a href="https://toml.io/ko/v1.0.0">https://toml.io/ko/v1.0.0</a></p>
<pre><code class="language-bash">cargo new
cargo check
cargo build
cargo run</code></pre>
<p>위처럼 프로젝트를 만들고(new),
빌드하며(build), 
빠르게 빌드없이 에러만 체크하고(check),
빌드 후, 추가로 바로 실행한다(run).</p>
<p>여기서 기본 빌드는 빠른 컴파일을 수행한다.
컴파일이 빠르면, 빌드를 빠르게 테스트 해볼 수 있지만 배포시, 최적화가 없다.</p>
<pre><code class="language-bash">cargo build --release</code></pre>
<p>위처럼 build 를 하면 컴파일은 느리지만 최적화가 진행되어 가볍고 빨라진다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-2. hello world]]></title>
            <link>https://velog.io/@teddy_rs/rs-2.-hello-world</link>
            <guid>https://velog.io/@teddy_rs/rs-2.-hello-world</guid>
            <pubDate>Mon, 13 Mar 2023 07:28:34 GMT</pubDate>
            <description><![CDATA[<p><a href="https://doc.rust-lang.org/beta/book/ch01-02-hello-world.html">https://doc.rust-lang.org/beta/book/ch01-02-hello-world.html</a></p>
<p>hello world 를 해보자.</p>
<p>필자는 mac m1 을 쓰고 있다.</p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/3a13649c-4791-4ee2-b2be-7cf777ddd37a/image.png" alt=""></p>
<p>toolchain 은 해당 언어의 개발툴 /bin 위치다.
아마 clion 설치하자마자 New Project 에 Rust 가 없을텐데, </p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/36eac418-a39b-464e-a49a-e06121bbfe59/image.png" alt=""></p>
<p>Plugins 에서 설치하면 된다.</p>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/27ca7cbc-78e4-427b-9d36-f8b9c9958412/image.png" alt=""></p>
<p>이런 구조다.</p>
<p>hello world 가 자동으로 만들어졌다.
자동으로 안만들어지면 docs 를 따라하자. (<a href="https://doc.rust-lang.org/beta/book/ch01-02-hello-world.html#creating-a-project-directory">https://doc.rust-lang.org/beta/book/ch01-02-hello-world.html#creating-a-project-directory</a>)</p>
<p>option + F12 키를 누르고, 터미널을 띄운 후 명령어를 사용한다.</p>
<pre><code class="language-bash">cargo run</code></pre>
<p><img src="https://velog.velcdn.com/images/teddy_rs/post/41b9fb54-6716-4c21-be3a-e180c7c615df/image.png" alt=""></p>
<p>clion 을 통해 rust binary 프로젝트를 만들고
[ Hello, world! ]
를 출력하였다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-1. docs 전체 둘러보기]]></title>
            <link>https://velog.io/@teddy_rs/rs-1.-docs-%EC%A0%84%EC%B2%B4-%EB%91%98%EB%9F%AC%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@teddy_rs/rs-1.-docs-%EC%A0%84%EC%B2%B4-%EB%91%98%EB%9F%AC%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Mon, 13 Mar 2023 07:13:03 GMT</pubDate>
            <description><![CDATA[<p><a href="https://doc.rust-lang.org/beta/book/index.html">https://doc.rust-lang.org/beta/book/index.html</a></p>
<p>이 시리즈는 위 사이트를 참고하여 공부한다.</p>
<p>공부 순서는 이론 -&gt; 문법 순서로 진행된다.</p>
<hr>
<p>문서가 잘 되어 있어서 굳이 블로그들을 찾아볼 필요가 없다.
<del>이 글도 마찬가지</del></p>
<p>23년 3월 기준으로 21 chapter 까지 있다.</p>
<p>3 chapter 까지 간단한 문법이 진행되는데, FP(Functional Programming) 컨셉을 가져왔다 카더라. <del>힙하다.</del></p>
<p>4 chap 에서 소유권(ownership) 을 말하고 있는데, 현 시점(2023.3)에 이런 패턴을 강제하는 언어는 유일하다. 소유권 개념이 메모리 문제나 동시성에서 발생하는 문제 등을 해결한다.</p>
<p>다른 언어에서 &#39;할당&#39;은 gc 를 쓰냐 안쓰냐에 따라 &#39;해제(malloc)&#39; 를 쓰냐 안쓰냐로 갈리는데, rust 는 gc가 없고 해제도 안보인다.</p>
<p>5 chap 에서 struct 와 traits 를 맛보기 한다.
rs 에서 사용하는 자료구조이다. struct 는 class, traits 는 interface 정도로 느껴진다.</p>
<p>이후 챕터부터 본격적으로 진행하며, 중간중간 작은 프로젝트가 껴있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[rs-0. rust 공부 계획]]></title>
            <link>https://velog.io/@teddy_rs/rs-0.-rust-%EA%B3%B5%EB%B6%80-%EA%B3%84%ED%9A%8D</link>
            <guid>https://velog.io/@teddy_rs/rs-0.-rust-%EA%B3%B5%EB%B6%80-%EA%B3%84%ED%9A%8D</guid>
            <pubDate>Mon, 13 Mar 2023 06:38:17 GMT</pubDate>
            <description><![CDATA[<p>동기: 취미
교과서: <a href="https://doc.rust-lang.org/beta/book/index.html">https://doc.rust-lang.org/beta/book/index.html</a>
ide: clion + rust plugin</p>
]]></description>
        </item>
    </channel>
</rss>