From 7a1583a712b5e0dfe9062df5d5d6f27e5123ea5f Mon Sep 17 00:00:00 2001
From: Alfex4936 <ikr@kakao.com>
Date: Sun, 19 Mar 2023 00:00:07 +0900
Subject: [PATCH] Update chapter 1

Update mobile swip actions
---
 docs/01_ko.html                    |   5 +-
 docs/02_ko.html                    |   3 +-
 docs/03_ko.html                    |   9 +-
 docs/04_ko.html                    |   5 +-
 docs/06_ko.html                    |   5 +-
 docs/07_ko.html                    |   3 +-
 docs/08_ko.html                    |   3 +-
 docs/09_ko.html                    |   3 +-
 docs/10_ko.html                    |   3 +-
 docs/11_ko.html                    |   3 +-
 docs/12_ko.html                    |   3 +-
 docs/13_ko.html                    |   3 +-
 docs/14_ko.html                    |   3 +-
 docs/15_ko.html                    |  37 +++++-
 docs/16_ko.html                    | 103 ++++++++++++++-
 docs/17_ko.html                    |  11 +-
 docs/18_ko.html                    |  21 ++-
 docs/19_ko.html                    |  84 ++++++++++++
 docs/21_ko.html                    |  76 +++++++++++
 docs/23_ko.html                    |  76 +++++++++++
 docs/25_ko.html                    |  76 +++++++++++
 docs/27_ko.html                    |  76 +++++++++++
 docs/29_ko.html                    |  76 +++++++++++
 docs/TOC_ko.html                   |  22 +--
 docs/chapter_1_ko.html             |   3 +-
 docs/chapter_2_ko.html             |   7 +-
 docs/chapter_3_ko.html             |   7 +-
 docs/chapter_4_ko.html             |   7 +-
 docs/chapter_5_ko.html             |   7 +-
 docs/chapter_6_ko.html             |   7 +-
 docs/index.html                    |   9 +-
 docs/tour.css                      |   7 +
 docs/tour.js                       | 120 ++++++++++-------
 frontend/generate.js               |  15 ++-
 frontend/lessons/ko/chapter_1.yaml | 206 ++++++++++++++++++++++++++++-
 35 files changed, 974 insertions(+), 130 deletions(-)
 create mode 100644 docs/19_ko.html
 create mode 100644 docs/21_ko.html
 create mode 100644 docs/23_ko.html
 create mode 100644 docs/25_ko.html
 create mode 100644 docs/27_ko.html
 create mode 100644 docs/29_ko.html

diff --git a/docs/01_ko.html b/docs/01_ko.html
index 8566576..6f2f19e 100644
--- a/docs/01_ko.html
+++ b/docs/01_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -44,7 +45,7 @@
 <blockquote>
   <p>I burnt out; ran out of emotional energy to be effective in my role as technical lead for the project mid way through 2013 (at the tail end of my divorce, and while recovering from a surgery -- not a great time in my life), so I took a break, switched off the Rust team - Graydon Hoare</p>
 </blockquote>
-<p>Rust는 Firefox 브라우저로 유명한 Mozilla의 개발자 <a href="https://arxiv.org/pdf/2206.05503&ved=2ahUKEwjT9o-23NX9AhVw5XMBHYQQB74QFnoECBwQAQ&usg=AOvVaw1uVD6znXuafpUqPN3jkm9C">Graydon Hoare에 의해 2006년</a>에 첫 시작된 <s>지금은 Swift 언어 기여자</s></p>
+<p>Rust는 Firefox 브라우저로 유명한 Mozilla의 개발자 <a href="https://arxiv.org/pdf/2206.05503&ved=2ahUKEwjT9o-23NX9AhVw5XMBHYQQB74QFnoECBwQAQ&usg=AOvVaw1uVD6znXuafpUqPN3jkm9C" target="_blank" rel="noopener">Graydon Hoare에 의해 2006년</a>에 첫 시작된 <s>지금은 Swift 언어 기여자</s></p>
 <p>안전하고 빠른 시스템 개발을 위한 언어로, 다음과 같은 이유에서 다양한 분야에서 점점 더 많이 사용:</p>
 <div align="center">
 <p>
diff --git a/docs/02_ko.html b/docs/02_ko.html
index a11b99c..b3f33d2 100644
--- a/docs/02_ko.html
+++ b/docs/02_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/03_ko.html b/docs/03_ko.html
index 9b5ea64..e041fcd 100644
--- a/docs/03_ko.html
+++ b/docs/03_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -35,9 +36,9 @@
             </div>
             <div class="page">
             <h1>Rust 언어 설치</h1>
-            <p><a href="https://rustup.rs/">https://rustup.rs/</a></p>
-<p><a href="https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/"><code>Microsoft C++ Build Tools</code></a></p>
-<p><a href="https://www.rust-lang.org/tools/install">@Link</a></p>
+            <p><a href="https://rustup.rs/" target="_blank" rel="noopener">https://rustup.rs/</a></p>
+<p><a href="https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/" target="_blank" rel="noopener"><code>Microsoft C++ Build Tools</code></a></p>
+<p><a href="https://www.rust-lang.org/tools/install" target="_blank" rel="noopener">@Link</a></p>
 <div align="center">
 <p>
     <img src="https://user-images.githubusercontent.com/2356749/223654372-637cbfd5-06f3-4c20-b97c-aefcdbbdafe6.png">
diff --git a/docs/04_ko.html b/docs/04_ko.html
index 84445ab..d5c419e 100644
--- a/docs/04_ko.html
+++ b/docs/04_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -47,7 +48,7 @@
 $ ./hello
 $ Hello, world! (stdout)
 </code></pre>
-<p><code>Google evcxr</code> - <a href="https://github.com/evcxr/evcxr">Rust REPL</a></p>
+<p><code>Google evcxr</code> - <a href="https://github.com/evcxr/evcxr" target="_blank" rel="noopener">Rust REPL</a></p>
             <div class="bottomnav">
                 <span class="back"><a href="03_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="chapter_1_ko.html" rel="next">다음 ❯</a></span>
diff --git a/docs/06_ko.html b/docs/06_ko.html
index a5ad0a0..d875cf6 100644
--- a/docs/06_ko.html
+++ b/docs/06_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -35,7 +36,7 @@
             </div>
             <div class="page">
             <h1>The Rust Playground</h1>
-            <p>이 웹사이트에서는 <a href="https://play.rust-lang.org">Rust Playground</a> 를 사용하여 온라인에서 직접 실행해 볼 수 있습니다.</p>
+            <p>이 웹사이트에서는 <a href="https://play.rust-lang.org" target="_blank" rel="noopener">Rust Playground</a> 를 사용하여 온라인에서 직접 실행해 볼 수 있습니다.</p>
 <p>우측에서 보다시피 <code>println()</code>도 아닌 <code>println!()</code> 와 같은 코드를 사용하여 stdout에 출력하는 것을 볼 수 있습니다.</p>
 <p><code>!</code> 이것은 매크로 (Macro)라는 Rust 언어의 특별한 기능 중 하나인데 우선은 생김새만 알고 나중에 뭔지 알아보겠습니다.</p>
 <p>Rust 언어는 쉽게 작성할 수 있도록 (syntactic sugar) 도와주지만 사실은 컴파일러가 아래처럼 처리합니다.</p>
diff --git a/docs/07_ko.html b/docs/07_ko.html
index fbb2313..0ae59e1 100644
--- a/docs/07_ko.html
+++ b/docs/07_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/08_ko.html b/docs/08_ko.html
index 26a0cb2..d06413a 100644
--- a/docs/08_ko.html
+++ b/docs/08_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/09_ko.html b/docs/09_ko.html
index 21a9dc9..cfbc9d7 100644
--- a/docs/09_ko.html
+++ b/docs/09_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/10_ko.html b/docs/10_ko.html
index 7a75bb3..22e6f90 100644
--- a/docs/10_ko.html
+++ b/docs/10_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/11_ko.html b/docs/11_ko.html
index 85877a4..8e7362a 100644
--- a/docs/11_ko.html
+++ b/docs/11_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/12_ko.html b/docs/12_ko.html
index b7d5f9d..0ee12e5 100644
--- a/docs/12_ko.html
+++ b/docs/12_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/13_ko.html b/docs/13_ko.html
index ee34fe0..618e626 100644
--- a/docs/13_ko.html
+++ b/docs/13_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/14_ko.html b/docs/14_ko.html
index 1db8a15..e6b9e94 100644
--- a/docs/14_ko.html
+++ b/docs/14_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/15_ko.html b/docs/15_ko.html
index 49cbf15..336748c 100644
--- a/docs/15_ko.html
+++ b/docs/15_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -34,15 +35,43 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Struct and Enum</h1>
-            <p>Struct, Enum</p>
+            <h1>match</h1>
+            <p>Rust에서 match 키워드는 패턴 매칭을 위해 사용하고
+값과 일련의 패턴을 비교할 수 있게 해줍니다.
+그리고 첫 번째 일치하는 패턴에 해당하는 코드 블록을 실행합니다.
+```rust fn main() {
+    let number = 42;</p>
+<pre><code>match number {
+    0 =&gt; println!("숫자는 영입니다"),
+    1 =&gt; println!("숫자는 일입니다"),
+    42 =&gt; println!("인생, 우주, 그리고 모든 것에 대한 답"),
+    _ =&gt; println!("숫자는 다른 것입니다"),
+}
+</code></pre>
+<p>} <code>
+여기서는 number 변수의 값을 여러 패턴과 비교합니다.
+`_` 패턴은 이전 패턴에서 명시적으로 다루지 않은 모든 값을 매치하는 `catch-all` 패턴입니다.
+</code>rust fn classify_age(age: u8) {
+    match age {
+        0..=12 =&gt; println!("어린이"),
+        13..=19 =&gt; println!("청소년"),
+        20..=64 =&gt; println!("성인"),
+        _ =&gt; println!("노인"),
+    }
+}
+fn main() {
+    let age = 25;
+    classify_age(age);
+} ```</p>
+<p>이 예제에서는 match 표현식을 사용하여 나이를 그룹으로 분류합니다.
+나이 변수와 매치하기 위해 범위를 패턴으로 사용합니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="14_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="16_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20swap(x%3A%20i32%2C%20y%3A%20i32)%20-%3E%20(i32%2C%20i32)%20%7B%0A%20%20%20%20return%20(y%2C%20x)%3B%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20return%20a%20tuple%20of%20return%20values%0A%20%20%20%20let%20result%20%3D%20swap(123%2C%20321)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20result.0%2C%20result.1)%3B%0A%0A%20%20%20%20%2F%2F%20destructure%20the%20tuple%20into%20two%20variables%20names%0A%20%20%20%20let%20(a%2C%20b)%20%3D%20swap(result.0%2C%20result.1)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20a%2C%20b)%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <!-- <script>
diff --git a/docs/16_ko.html b/docs/16_ko.html
index c0f625c..6afd83a 100644
--- a/docs/16_ko.html
+++ b/docs/16_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -34,17 +35,107 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Returning Nothing</h1>
-            <p>함수에 대해 반환 유형이 지정되어 있지 않으면, <em>unit</em>이라고도 하는 빈 튜플을 반환합니다.</p>
-<p>빈 튜플은 <code>()</code>로 나타낼 수 있습니다.</p>
-<p><code>()</code>을 사용하는 것은 드문 경우이지만 충분히 자주 출현하기 때문에 무슨 일이 일어나는지 알아둘 가치가 있습니다.</p>
+            <h1>Struct and Enum</h1>
+            <h2 id="struct">구조체 (Struct)</h2>
+<p>구조체는 struct 키워드를 사용하여 정의하며, 이름과 중괄호로 묶인 명명된 필드 집합이 뒤따릅니다.
+다음은 Person 구조체의 예입니다:
+<code>rust struct Person {
+  name: String,
+  age: u8,
+}</code>
+구조체의 인스턴스를 생성하려면, 구조체 이름 뒤에 중괄호를 사용하고 필드에 값을 할당합니다.
+예를 들면:</p>
+<h2 id="rustletpersonpersonnamestringfromaliceage30"><code>rust let person = Person { name: String::from("Alice"), age: 30 };</code></h2>
+<h2 id="enum">열거형 (Enum)</h2>
+<p>열거형(enum, "enumeration"의 줄임말)은 고정된 명명된 값 집합인 "변종(variants)"을 가진 타입을 나타냅니다.
+열거형을 정의하려면, enum 키워드를 사용하고 이름과 중괄호로 묶인 명명된 변종 집합이 뒤따릅니다.
+다음은 Status 열거형의 예입니다:
+<code>rust enum Status {
+  Active,
+  Inactive,
+  Pending,
+}</code>
+열거형의 인스턴스를 생성하려면, 열거형 이름 뒤에 두 개의 콜론(<code>::</code>)과 변종 이름을 사용합니다.
+예를 들면:
+<code>rust let status = Status::Active;</code>
+열거형 변종에 따라 다른 작업을 수행하려면 match 표현식을 사용할 수 있습니다:
+<code>rust let user_status = Status::Active;</code>
+열거형을 다루려면, 종종 match 표현식을 사용하며, 이를 통해 열거형 변종에 따라 다른 작업을 수행할 수 있습니다:
+```rust fn print<em>status</em>message(status: Status) {
+    match status {
+        Status::Active =&gt; println!("사용자가 활성 상태입니다."),
+        Status::Inactive =&gt; println!("사용자가 비활성 상태입니다."),
+        Status::Pending =&gt; println!("사용자가 보류 중입니다."),
+    }
+}
+fn main() {
+    let user<em>status = Status::Active;
+    print</em>status<em>message(user</em>status);</p>
+<h2 id="">} ```</h2>
+<h2 id="tuplestructenum">Tuple Struct, Enum</h2>
+<p>주로 간결한 표현, 타입 안전성 및 논리적 구조를 위해 사용됩니다.</p>
+<ul>
+<li><p>튜플 구조체 (Tuple Struct): 튜플 구조체는 필드에 이름이 없는 구조체로, 간단한 데이터 구조를 표현할 때 유용합니다. 튜플 구조체를 사용하면, 구조체의 의미를 명확하게 나타낼 수 있으며, 일반 튜플보다 더 강력한 타입 안전성을 제공합니다. 예를 들어, 두 개의 float 값을 나타내는 Point2D와 Vector2D를 구별하기 위해 튜플 구조체를 사용할 수 있습니다. 이렇게 하면 코드의 가독성과 정확성이 향상됩니다. - 열거형 (Enum): 열거형은 서로 관련된 값의 집합을 표현하기 위해 사용됩니다. 열거형은 여러 변종(variants)을 가질 수 있으며, 각 변종은 고유한 타입입니다. 열거형은 논리적으로 관련된 여러 값을 그룹화하여 코드의 명확성과 구조를 개선하는 데 도움이 됩니다. 또한 열거형은 패턴 매칭을 사용하여 값에 따라 다양한 작업을 수행할 수 있어, 런타임에 오류가 발생하는 가능성이 줄어듭니다. - 튜플 열거형 변종 (Tuple Enum Variants): 튜플 열거형 변종은 열거형의 각 변종에 데이터를 연관시키는 데 사용됩니다. 튜플 열거형 변종은 각 변종에 서로 다른 타입과 수의 값을 저장할 수 있습니다. 이러한 변종은 열거형의 다양한 경우를 명확하게 구분하고, 관련 데이터를 함께 저장하여 논리적 구조를 제공하는 데 유용합니다. 패턴 매칭을 사용하면 튜플 열거형 변종의 값을 안전하게 추출하고, 해당 값에 따라 다양한 작업을 수행할 수 있습니다.
+```rust // 튜플 구조체 (Tuple Struct) struct Point3D(f32, f32, f32);
+// 열거형에 튜플 변종 (Tuple Enum Variant) 포함 enum Shape {
+Circle(f32),
+Rectangle(f32, f32),
+}
+fn main() {
+let point = Point3D(1.0, 2.0, 3.0);
+let circle = Shape::Circle(5.0);
+let rectangle = Shape::Rectangle(4.0, 6.0);</p>
+<p>// 튜플 구조체의 값에 접근
+println!("x 좌표: {}", point.0);
+println!("y 좌표: {}", point.1);
+println!("z 좌표: {}", point.2);</p>
+<p>// 튜플 열거형 변종의 값에 접근
+match circle {
+    Shape::Circle(radius) =&gt; println!("원의 반지름: {}", radius),
+    _ =&gt; (),
+}</p></li>
+</ul>
+<h2 id="-1">} ```</h2>
+<h2 id="nested">Nested</h2>
+<p>중첩된 Struct과 Enum을 만들고 싶다면?
+<code>rust // 중첩된 구조체 (Nested Struct) struct Address {
+    street: String,
+    city: String,
+}
+struct Person {
+    name: String,
+    address: Address,
+}
+// 중첩된 열거형 (Nested Enum) enum Animal {
+    Mammal {
+        species: String,
+        is_domestic: bool,
+    },
+    Reptile {
+        species: String,
+        is_poisonous: bool,
+    },
+}
+fn main() {
+    let person = Person {
+        name: String::from("지훈"),
+        address: Address {
+            street: String::from("서울로"),
+            city: String::from("서울"),
+        },
+    };
+    let dog = Animal::Mammal {
+        species: String::from("개"),
+        is_domestic: true,
+    };
+}</code></p>
             <div class="bottomnav">
                 <span class="back"><a href="15_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="17_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20make_nothing()%20-%3E%20()%20%7B%0A%20%20%20%20return%20()%3B%0A%7D%0A%0A%2F%2F%20the%20return%20type%20is%20implied%20as%20()%0Afn%20make_nothing2()%20%7B%0A%20%20%20%20%2F%2F%20this%20function%20will%20return%20()%20if%20nothing%20is%20specified%20to%20return%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20let%20a%20%3D%20make_nothing()%3B%0A%20%20%20%20let%20b%20%3D%20make_nothing2()%3B%0A%0A%20%20%20%20%2F%2F%20Printing%20a%20debug%20string%20for%20a%20and%20b%0A%20%20%20%20%2F%2F%20Because%20it's%20hard%20to%20print%20nothingness%0A%20%20%20%20println!(%22The%20value%20of%20a%3A%20%7B%3A%3F%7D%22%2C%20a)%3B%0A%20%20%20%20println!(%22The%20value%20of%20b%3A%20%7B%3A%3F%7D%22%2C%20b)%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%ED%8A%B9%EC%84%B1+%28Trait%29+%EC%A0%95%EC%9D%98%0D%0Atrait+Greet+%7B%0D%0A++++fn+greet%28%26self%29+-%3E+String%3B%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%28Struct%29+%EC%A0%95%EC%9D%98%0D%0Astruct+Person+%7B%0D%0A++++name%3A+String%2C%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EC%97%90+%EB%8C%80%ED%95%9C+%ED%8A%B9%EC%84%B1+%EA%B5%AC%ED%98%84%0D%0Aimpl+Greet+for+Person+%7B%0D%0A++++fn+greet%28%26self%29+-%3E+String+%7B%0D%0A++++++++format%21%28%22%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94%2C+%7B%7D%EB%8B%98%21%22%2C+self.name%29%0D%0A++++%7D%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EC%97%B4%EA%B1%B0%ED%98%95+%28Enum%29+%EC%A0%95%EC%9D%98%0D%0Aenum+Animal+%7B%0D%0A++++Dog%2C%0D%0A++++Cat%2C%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EC%97%B4%EA%B1%B0%ED%98%95%EC%97%90+%EB%8C%80%ED%95%9C+%ED%8A%B9%EC%84%B1+%EA%B5%AC%ED%98%84%0D%0Aimpl+Greet+for+Animal+%7B%0D%0A++++fn+greet%28%26self%29+-%3E+String+%7B%0D%0A++++++++match+self+%7B%0D%0A++++++++++++Animal%3A%3ADog+%3D%3E+String%3A%3Afrom%28%22%EB%A9%8D%EB%A9%8D%21%22%29%2C%0D%0A++++++++++++Animal%3A%3ACat+%3D%3E+String%3A%3Afrom%28%22%EC%95%BC%EC%98%B9%7E%22%29%2C%0D%0A++++++++%7D%0D%0A++++%7D%0D%0A%7D%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+person+%3D+Person+%7B%0D%0A++++++++name%3A+String%3A%3Afrom%28%22%EA%B9%80%EC%95%84%EC%A3%BC%22%29%2C%0D%0A++++%7D%3B%0D%0A++++let+dog+%3D+Animal%3A%3ADog%3B%0D%0A%0D%0A++++%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EC%99%80+%EC%97%B4%EA%B1%B0%ED%98%95+%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EC%97%90+greet+%EB%A9%94%EC%84%9C%EB%93%9C+%EC%82%AC%EC%9A%A9%0D%0A++++println%21%28%22%7B%7D%22%2C+person.greet%28%29%29%3B%0D%0A++++println%21%28%22%7B%7D%22%2C+dog.greet%28%29%29%3B%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <!-- <script>
diff --git a/docs/17_ko.html b/docs/17_ko.html
index 2232b82..3c99a86 100644
--- a/docs/17_ko.html
+++ b/docs/17_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -34,15 +35,17 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Error handling</h1>
-            <p>Error handling</p>
+            <h1>Returning Nothing</h1>
+            <p>함수에 대해 반환 유형이 지정되어 있지 않으면, <em>unit</em>이라고도 하는 빈 튜플을 반환합니다.</p>
+<p>빈 튜플은 <code>()</code>로 나타낼 수 있습니다.</p>
+<p><code>()</code>을 사용하는 것은 드문 경우이지만 충분히 자주 출현하기 때문에 무슨 일이 일어나는지 알아둘 가치가 있습니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="16_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="18_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20swap(x%3A%20i32%2C%20y%3A%20i32)%20-%3E%20(i32%2C%20i32)%20%7B%0A%20%20%20%20return%20(y%2C%20x)%3B%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20return%20a%20tuple%20of%20return%20values%0A%20%20%20%20let%20result%20%3D%20swap(123%2C%20321)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20result.0%2C%20result.1)%3B%0A%0A%20%20%20%20%2F%2F%20destructure%20the%20tuple%20into%20two%20variables%20names%0A%20%20%20%20let%20(a%2C%20b)%20%3D%20swap(result.0%2C%20result.1)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20a%2C%20b)%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20make_nothing()%20-%3E%20()%20%7B%0A%20%20%20%20return%20()%3B%0A%7D%0A%0A%2F%2F%20the%20return%20type%20is%20implied%20as%20()%0Afn%20make_nothing2()%20%7B%0A%20%20%20%20%2F%2F%20this%20function%20will%20return%20()%20if%20nothing%20is%20specified%20to%20return%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20let%20a%20%3D%20make_nothing()%3B%0A%20%20%20%20let%20b%20%3D%20make_nothing2()%3B%0A%0A%20%20%20%20%2F%2F%20Printing%20a%20debug%20string%20for%20a%20and%20b%0A%20%20%20%20%2F%2F%20Because%20it's%20hard%20to%20print%20nothingness%0A%20%20%20%20println!(%22The%20value%20of%20a%3A%20%7B%3A%3F%7D%22%2C%20a)%3B%0A%20%20%20%20println!(%22The%20value%20of%20b%3A%20%7B%3A%3F%7D%22%2C%20b)%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <!-- <script>
diff --git a/docs/18_ko.html b/docs/18_ko.html
index d715766..f0a10dd 100644
--- a/docs/18_ko.html
+++ b/docs/18_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -34,22 +35,16 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Chapter 1 - 마무리</h1>
-            <p>Rust의 기초는 그렇게 나쁘지 않죠?</p>
-<p>시스템 프로그래밍 언어로서, Rust는 메모리 내 값을 매우 신경쓰며,</p>
-<p>수정이 가능한지 불가능한지 여부, 그리고 수학 연산이 의도한 대로 수행되는지 확인합니다.</p>
-<p>참고:</p>
-<ul>
-<li><a href="https://www.youtube.com/watch?v=n5TRBkbystY">Youtube: Rust Cast - Rust의 기본 숫자 유형에 대한 더 깊은 이해</a></li>
-<li><a href="https://doc.rust-lang.org/1.30.0/book/2018-edition/ch03-02-data-types.html">Website: Rust Book 2018 - 기본 데이터 유형에 대한 자세한 설명</a></li>
-<li><a href="https://cheats.rs/#basic-types">Website: Rust Cheat Sheet - Data Types</a></li>
-</ul>
+            <h1>Error handling</h1>
+            <p>Error handling</p>
             <div class="bottomnav">
                 <span class="back"><a href="17_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_2_ko.html" rel="next">다음 ❯</a></span>
+                <span class="next"><a href="19_ko.html" rel="next">다음 ❯</a></span>
+            </div>
             </div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20swap(x%3A%20i32%2C%20y%3A%20i32)%20-%3E%20(i32%2C%20i32)%20%7B%0A%20%20%20%20return%20(y%2C%20x)%3B%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20return%20a%20tuple%20of%20return%20values%0A%20%20%20%20let%20result%20%3D%20swap(123%2C%20321)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20result.0%2C%20result.1)%3B%0A%0A%20%20%20%20%2F%2F%20destructure%20the%20tuple%20into%20two%20variables%20names%0A%20%20%20%20let%20(a%2C%20b)%20%3D%20swap(result.0%2C%20result.1)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20a%2C%20b)%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
         </div>
         <!-- <script>
           document.addEventListener("DOMContentLoaded", function() {
diff --git a/docs/19_ko.html b/docs/19_ko.html
new file mode 100644
index 0000000..6dc6c3d
--- /dev/null
+++ b/docs/19_ko.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Chapter 1 - 마무리</h1>
+            <p>Rust의 기초는 그렇게 나쁘지 않죠?</p>
+<p>시스템 프로그래밍 언어로서, Rust는 메모리 내 값을 매우 신경쓰며,</p>
+<p>수정이 가능한지 불가능한지 여부, 그리고 수학 연산이 의도한 대로 수행되는지 확인합니다.</p>
+<p>참고:</p>
+<ul>
+<li><a href="https://www.youtube.com/watch?v=n5TRBkbystY" target="_blank" rel="noopener">Youtube: Rust Cast - Rust의 기본 숫자 유형에 대한 더 깊은 이해</a></li>
+<li><a href="https://doc.rust-lang.org/1.30.0/book/2018-edition/ch03-02-data-types.html" target="_blank" rel="noopener">Website: Rust Book 2018 - 기본 데이터 유형에 대한 자세한 설명</a></li>
+<li><a href="https://cheats.rs/#basic-types" target="_blank" rel="noopener">Website: Rust Cheat Sheet - Data Types</a></li>
+</ul>
+            <div class="bottomnav">
+                <span class="back"><a href="18_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_2_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/21_ko.html b/docs/21_ko.html
new file mode 100644
index 0000000..e466078
--- /dev/null
+++ b/docs/21_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_2_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_3_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/23_ko.html b/docs/23_ko.html
new file mode 100644
index 0000000..64a27c8
--- /dev/null
+++ b/docs/23_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_3_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_4_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/25_ko.html b/docs/25_ko.html
new file mode 100644
index 0000000..0e875ce
--- /dev/null
+++ b/docs/25_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_4_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_5_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/27_ko.html b/docs/27_ko.html
new file mode 100644
index 0000000..3dbc0b4
--- /dev/null
+++ b/docs/27_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_5_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_6_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/29_ko.html b/docs/29_ko.html
new file mode 100644
index 0000000..b3edb7e
--- /dev/null
+++ b/docs/29_ko.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Hey</h1>
+            <p>CSW</p>
+            <div class="bottomnav">
+                <span class="back"><a href="chapter_6_ko.html" rel="prev">❮ 이전</a></span>
+                
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+        </div>
+        <!-- <script>
+          document.addEventListener("DOMContentLoaded", function() {
+            // Select the widget's text element using its XPath
+            const xpath = '/html/body/main/div/div/div[1]/div[1]/div/button[1]/div';
+            const widgetText = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
+
+            // Change the text content of the element
+            widgetText.textContent = "New Text";
+          });
+        </script> -->
+
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p>아주대학교 Software Tool Time - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/TOC_ko.html b/docs/TOC_ko.html
index abe6532..c0e42be 100644
--- a/docs/TOC_ko.html
+++ b/docs/TOC_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -51,20 +52,21 @@
 <li><a href="12_ko.html">Arrays</a></li>
 <li><a href="13_ko.html">Functions</a></li>
 <li><a href="14_ko.html">Multiple Return Values</a></li>
-<li><a href="15_ko.html">Struct and Enum</a></li>
-<li><a href="16_ko.html">Returning Nothing</a></li>
-<li><a href="17_ko.html">Error handling</a></li>
-<li><a href="18_ko.html">Chapter 1 - 마무리</a></li>
+<li><a href="15_ko.html">match</a></li>
+<li><a href="16_ko.html">Struct and Enum</a></li>
+<li><a href="17_ko.html">Returning Nothing</a></li>
+<li><a href="18_ko.html">Error handling</a></li>
+<li><a href="19_ko.html">Chapter 1 - 마무리</a></li>
 </ul><h3><a href="chapter_2_ko.html">Chapter 2 - Ownership</a></h3><ul>
-<li><a href="20_ko.html">Hey</a></li>
+<li><a href="21_ko.html">Hey</a></li>
 </ul><h3><a href="chapter_3_ko.html">Chapter 3 - Generic, Trait</a></h3><ul>
-<li><a href="22_ko.html">Hey</a></li>
+<li><a href="23_ko.html">Hey</a></li>
 </ul><h3><a href="chapter_4_ko.html">Chapter 4 - Advanced</a></h3><ul>
-<li><a href="24_ko.html">Hey</a></li>
+<li><a href="25_ko.html">Hey</a></li>
 </ul><h3><a href="chapter_5_ko.html">Chapter 5 - Module</a></h3><ul>
-<li><a href="26_ko.html">Hey</a></li>
+<li><a href="27_ko.html">Hey</a></li>
 </ul><h3><a href="chapter_6_ko.html">Chapter 6 - Web Framework</a></h3><ul>
-<li><a href="28_ko.html">Hey</a></li>
+<li><a href="29_ko.html">Hey</a></li>
             </ul>
             </div>
         </div>
diff --git a/docs/chapter_1_ko.html b/docs/chapter_1_ko.html
index d13acf3..dd002df 100644
--- a/docs/chapter_1_ko.html
+++ b/docs/chapter_1_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/docs/chapter_2_ko.html b/docs/chapter_2_ko.html
index dee1070..fa1925c 100644
--- a/docs/chapter_2_ko.html
+++ b/docs/chapter_2_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -37,8 +38,8 @@
             <h1>Chapter 2 - Ownership</h1>
             <p>소유권, 빌리기, borrow checker</p>
             <div class="bottomnav">
-                <span class="back"><a href="18_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="20_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="19_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="21_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/chapter_3_ko.html b/docs/chapter_3_ko.html
index 97cc094..986ef15 100644
--- a/docs/chapter_3_ko.html
+++ b/docs/chapter_3_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -37,8 +38,8 @@
             <h1>Chapter 3 - Generic, Trait</h1>
             <p>OOP</p>
             <div class="bottomnav">
-                <span class="back"><a href="20_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="22_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="21_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="23_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/chapter_4_ko.html b/docs/chapter_4_ko.html
index d5c3a63..f447cf3 100644
--- a/docs/chapter_4_ko.html
+++ b/docs/chapter_4_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -37,8 +38,8 @@
             <h1>Chapter 4 - Advanced</h1>
             <p>Concurrency, Macro, Unsafe</p>
             <div class="bottomnav">
-                <span class="back"><a href="22_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="24_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="23_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="25_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/chapter_5_ko.html b/docs/chapter_5_ko.html
index 6448f35..6ee0670 100644
--- a/docs/chapter_5_ko.html
+++ b/docs/chapter_5_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -38,8 +39,8 @@
             <p>모듈 사용</p>
 <p>간단한 모듈 제작 및 업로드</p>
             <div class="bottomnav">
-                <span class="back"><a href="24_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="26_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="25_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="27_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/chapter_6_ko.html b/docs/chapter_6_ko.html
index 95e6e19..48ccd88 100644
--- a/docs/chapter_6_ko.html
+++ b/docs/chapter_6_ko.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -38,8 +39,8 @@
             <p>웹 프레임워크 actix-rs 소개</p>
 <p>간단 카카오톡 챗봇 제작</p>
             <div class="bottomnav">
-                <span class="back"><a href="26_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="28_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="27_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="29_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
diff --git a/docs/index.html b/docs/index.html
index e4b80cf..1172aec 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -6,7 +6,7 @@
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -22,6 +22,7 @@
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
@@ -36,9 +37,9 @@
             <div class="page">
             <h1>Hello World!</h1>
             <p><img src="/intro.webp" alt="Welcome to Rust" style="width: 100%; margin-bottom: 20px; border-radius: 10px;"></p>
-<p>Mirror 1: <a href="http://rust-study.ajousw.kr/index.html">http://rust-study.ajousw.kr/</a></p>
-<p>Mirror 2: <a href="https://hi-rust.github.io/index.html">https://hi-rust.github.io/</a></p>
-<p>Binary: Windows/Mac/Ubuntu22.04 <a href="https://github.com/Hi-Rust/hi-rust.github.io/releases">@다운로드</a></p>
+<p>Mirror 1: <a href="http://rust-study.ajousw.kr/index.html" target="_blank" rel="noopener">http://rust-study.ajousw.kr/</a></p>
+<p>Mirror 2: <a href="https://hi-rust.github.io/index.html" target="_blank" rel="noopener">https://hi-rust.github.io/</a></p>
+<p>Binary: Windows/Mac/Ubuntu22.04 <a href="https://github.com/Hi-Rust/hi-rust.github.io/releases" target="_blank" rel="noopener">@다운로드</a></p>
 <p><strong>자기주도프로젝트 🎉</strong></p>
 <p>안녕하세요. 자기주도프로젝트 Rust 튜토리얼 영상을 위한 웹사이트입니다.</p>
 <p><code>프로그래밍 기초 지식이 있는 분들을 타겟</code>으로 만들었습니다. (C &amp; Python)</p>
diff --git a/docs/tour.css b/docs/tour.css
index 1be9e55..2d1212e 100644
--- a/docs/tour.css
+++ b/docs/tour.css
@@ -1,3 +1,5 @@
+@import url("https://fonts.googleapis.com/css?family=Noto+Sans+KR&display=swap");
+
 a {
   color: #1e90ff;
   text-decoration: none;
@@ -122,6 +124,7 @@ html,
 body {
   padding: 0px;
   margin: 0px;
+  font-family: "Noto Sans KR", sans-serif;
   /* font-family: "NanumGothic", serif; */
   color: #333;
 }
@@ -141,6 +144,10 @@ body {
   padding-right: 10px;
 }
 
+h3 {
+  font-size: 2em;
+}
+
 iframe {
   border-radius: 10px;
 }
diff --git a/docs/tour.js b/docs/tour.js
index 0a7313e..f7ca148 100644
--- a/docs/tour.js
+++ b/docs/tour.js
@@ -1,48 +1,83 @@
-const setupKeys = () => {
-  // Mobile swipe left/right
-  let xDown = null;
-  let yDown = null;
-  const swipeThreshold = 10; // swipe sensitivity
-
-  const handleTouchStart = e => {
-    xDown = e.touches[0].clientX;
-    yDown = e.touches[0].clientY;
-  };
-
-  const handleTouchMove = e => {
-    if (!xDown || !yDown) {
-      return;
-    }
+// var page = document.querySelector("div.tour");
 
-    const xDiff = xDown - e.touches[0].clientX;
-    const yDiff = yDown - e.touches[0].clientY;
+// console.log(page);
 
-    // alert(Math.abs(xDiff));
+// var hammer = new Hammer(document.body);
 
-    if (Math.abs(xDiff) > swipeThreshold && Math.abs(xDiff) > Math.abs(yDiff)) {
-      const direction = xDiff > 0 ? "next" : "back";
-      triggerLinkClick(direction);
-    }
+// hammer.on("swipeleft", function () {
+//   console.log("Left");
+//   triggerLinkClick("next");
+// });
 
-    xDown = null;
-    yDown = null;
-  };
+// hammer.on("swiperight", function () {
+//   triggerLinkClick("back");
+// });
+
+const triggerLinkClick = direction => {
+  const link = document.querySelector(`.${direction} a`);
+  if (link) {
+    link.click();
+  }
+};
 
-  const triggerLinkClick = direction => {
-    const link = document.querySelector(`.${direction} a`);
-    if (link) {
-      link.click();
+var xDown = null;
+var yDown = null;
+
+const handleTouchStart = evt => {
+  xDown = evt.touches[0].clientX;
+  yDown = evt.touches[0].clientY;
+};
+
+const handleTouchMove = evt => {
+  if (!xDown || !yDown) {
+    return;
+  }
+
+  var touchTarget = evt.target;
+  while (touchTarget) {
+    if (
+      touchTarget.tagName === "CODE" &&
+      touchTarget.parentElement.tagName === "PRE"
+    ) {
+      // ignore swipe on pre > code elements
+      return;
     }
-  };
+    touchTarget = touchTarget.parentElement;
+  }
 
-  document.addEventListener("touchstart", handleTouchStart, false);
-  document.addEventListener("touchmove", handleTouchMove, false);
+  var xUp = evt.touches[0].clientX;
+  var yUp = evt.touches[0].clientY;
 
+  var xDiff = xDown - xUp;
+  var yDiff = yDown - yUp;
+  if (Math.abs(xDiff) + Math.abs(yDiff) > 100) {
+    if (Math.abs(xDiff) > Math.abs(yDiff)) {
+      if (xDiff > 0) {
+        /* left swipe */
+        triggerLinkClick("next");
+      } else {
+        /* right swipe */
+        triggerLinkClick("back");
+      }
+    }
+    /* reset values */
+    xDown = null;
+    yDown = null;
+  }
+};
+
+const setupKeys = () => {
   // PC
   document.body.addEventListener("keyup", e => {
     if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) {
       return;
     }
+
+    if (document.activeElement.tagName === "SPAN") {
+      // ignore keys on pre > code elements
+      return;
+    }
+
     if (e.key === "Right" || e.key === "ArrowRight") {
       triggerLinkClick("next");
     }
@@ -52,24 +87,9 @@ const setupKeys = () => {
   });
 };
 
-// in code block, should not be same
-const codeElement = document.querySelector("code");
-if (codeElement) {
-  setupKeys();
-  codeElement.addEventListener("load", () => {
-    setTimeout(() => {
-      document.querySelector("a").focus();
-      setupKeys();
-    }, 100);
-    setTimeout(() => {
-      document.querySelector("a").focus();
-      setupKeys();
-    }, 1000);
-    setupKeys();
-  });
-} else {
-  setupKeys();
-}
+document.addEventListener("touchstart", handleTouchStart, false);
+document.addEventListener("touchmove", handleTouchMove, false);
+setupKeys();
 
 // in iframe, should not be same
 const iframeElement = document.querySelector("iframe");
diff --git a/frontend/generate.js b/frontend/generate.js
index a3e4bd7..755ec7d 100644
--- a/frontend/generate.js
+++ b/frontend/generate.js
@@ -90,7 +90,17 @@ const lessons = {
   pages,
 };
 
-const converter = new showdown.Converter();
+const a_binder = [
+  {
+    type: "output",
+    regex: /(<a [^>]*)(>.*<\/a>)/g,
+    replace: '$1 target="_blank" rel="noopener"$2',
+  },
+];
+
+const converter = new showdown.Converter({
+  extensions: [...a_binder],
+});
 
 /**
  * @param {string[]} words
@@ -119,7 +129,7 @@ const getHead = (words, lang) => `<!DOCTYPE html>
         <meta charset="UTF-8">
         <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
         <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1"
         <meta name="keywords" content="Rust, Programming, Learning">
         <meta name="description" content="Rust tutorial website based on tour_of_rust">
         <meta name="theme-color" content="#ff6801"/>
@@ -135,6 +145,7 @@ const getHead = (words, lang) => `<!DOCTYPE html>
         <link rel="/manifest" href="./site.webmanifest">
         
         <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
         <script src="./tour.js" defer></script>
         <!-- <script>hljs.highlightAll();</script> -->
         <script src="./highlight.badge.min.js"></script>
diff --git a/frontend/lessons/ko/chapter_1.yaml b/frontend/lessons/ko/chapter_1.yaml
index 50d8025..f72bd37 100644
--- a/frontend/lessons/ko/chapter_1.yaml
+++ b/frontend/lessons/ko/chapter_1.yaml
@@ -197,11 +197,213 @@
     Rust는 여러 형식의 destructuring을 지원합니다.
 
     우리는 더 많은 형태로 볼 것이며, 이를 통해 데이터 구조의 하위 요소를 직관적으로 추출할 수 있습니다.
+- title: match
+  code: >-
+    https://
+  content_markdown: >
+    Rust에서 match 키워드는 패턴 매칭을 위해 사용하고
+
+    값과 일련의 패턴을 비교할 수 있게 해줍니다.
+
+    그리고 첫 번째 일치하는 패턴에 해당하는 코드 블록을 실행합니다.
+
+    ```rust
+    fn main() {
+        let number = 42;
+
+        match number {
+            0 => println!("숫자는 영입니다"),
+            1 => println!("숫자는 일입니다"),
+            42 => println!("인생, 우주, 그리고 모든 것에 대한 답"),
+            _ => println!("숫자는 다른 것입니다"),
+        }
+    }
+    ```
+
+    여기서는 number 변수의 값을 여러 패턴과 비교합니다.
+
+    `_` 패턴은 이전 패턴에서 명시적으로 다루지 않은 모든 값을 매치하는 `catch-all` 패턴입니다.
+
+    ```rust
+    fn classify_age(age: u8) {
+        match age {
+            0..=12 => println!("어린이"),
+            13..=19 => println!("청소년"),
+            20..=64 => println!("성인"),
+            _ => println!("노인"),
+        }
+    }
+
+    fn main() {
+        let age = 25;
+        classify_age(age);
+    }
+    ```
+
+
+    이 예제에서는 match 표현식을 사용하여 나이를 그룹으로 분류합니다.
+
+    나이 변수와 매치하기 위해 범위를 패턴으로 사용합니다.
 - title: Struct and Enum
   code: >-
-    https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20swap(x%3A%20i32%2C%20y%3A%20i32)%20-%3E%20(i32%2C%20i32)%20%7B%0A%20%20%20%20return%20(y%2C%20x)%3B%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20%2F%2F%20return%20a%20tuple%20of%20return%20values%0A%20%20%20%20let%20result%20%3D%20swap(123%2C%20321)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20result.0%2C%20result.1)%3B%0A%0A%20%20%20%20%2F%2F%20destructure%20the%20tuple%20into%20two%20variables%20names%0A%20%20%20%20let%20(a%2C%20b)%20%3D%20swap(result.0%2C%20result.1)%3B%0A%20%20%20%20println!(%22%7B%7D%20%7B%7D%22%2C%20a%2C%20b)%3B%0A%7D%0A
+    https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%ED%8A%B9%EC%84%B1+%28Trait%29+%EC%A0%95%EC%9D%98%0D%0Atrait+Greet+%7B%0D%0A++++fn+greet%28%26self%29+-%3E+String%3B%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%28Struct%29+%EC%A0%95%EC%9D%98%0D%0Astruct+Person+%7B%0D%0A++++name%3A+String%2C%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EC%97%90+%EB%8C%80%ED%95%9C+%ED%8A%B9%EC%84%B1+%EA%B5%AC%ED%98%84%0D%0Aimpl+Greet+for+Person+%7B%0D%0A++++fn+greet%28%26self%29+-%3E+String+%7B%0D%0A++++++++format%21%28%22%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94%2C+%7B%7D%EB%8B%98%21%22%2C+self.name%29%0D%0A++++%7D%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EC%97%B4%EA%B1%B0%ED%98%95+%28Enum%29+%EC%A0%95%EC%9D%98%0D%0Aenum+Animal+%7B%0D%0A++++Dog%2C%0D%0A++++Cat%2C%0D%0A%7D%0D%0A%0D%0A%2F%2F+%EC%97%B4%EA%B1%B0%ED%98%95%EC%97%90+%EB%8C%80%ED%95%9C+%ED%8A%B9%EC%84%B1+%EA%B5%AC%ED%98%84%0D%0Aimpl+Greet+for+Animal+%7B%0D%0A++++fn+greet%28%26self%29+-%3E+String+%7B%0D%0A++++++++match+self+%7B%0D%0A++++++++++++Animal%3A%3ADog+%3D%3E+String%3A%3Afrom%28%22%EB%A9%8D%EB%A9%8D%21%22%29%2C%0D%0A++++++++++++Animal%3A%3ACat+%3D%3E+String%3A%3Afrom%28%22%EC%95%BC%EC%98%B9%7E%22%29%2C%0D%0A++++++++%7D%0D%0A++++%7D%0D%0A%7D%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+person+%3D+Person+%7B%0D%0A++++++++name%3A+String%3A%3Afrom%28%22%EA%B9%80%EC%95%84%EC%A3%BC%22%29%2C%0D%0A++++%7D%3B%0D%0A++++let+dog+%3D+Animal%3A%3ADog%3B%0D%0A%0D%0A++++%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EC%99%80+%EC%97%B4%EA%B1%B0%ED%98%95+%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EC%97%90+greet+%EB%A9%94%EC%84%9C%EB%93%9C+%EC%82%AC%EC%9A%A9%0D%0A++++println%21%28%22%7B%7D%22%2C+person.greet%28%29%29%3B%0D%0A++++println%21%28%22%7B%7D%22%2C+dog.greet%28%29%29%3B%0D%0A%7D%0D%0A
   content_markdown: >
-    Struct, Enum
+    ## 구조체 (Struct)
+
+
+    구조체는 struct 키워드를 사용하여 정의하며, 이름과 중괄호로 묶인 명명된 필드 집합이 뒤따릅니다.
+
+    다음은 Person 구조체의 예입니다:
+
+    ```rust
+    struct Person {
+      name: String,
+      age: u8,
+    }
+    ```
+
+    구조체의 인스턴스를 생성하려면, 구조체 이름 뒤에 중괄호를 사용하고 필드에 값을 할당합니다.
+
+    예를 들면:
+
+    ```rust
+    let person = Person { name: String::from("Alice"), age: 30 };
+    ```
+
+    ---
+
+    ## 열거형 (Enum)
+
+
+    열거형(enum, "enumeration"의 줄임말)은 고정된 명명된 값 집합인 "변종(variants)"을 가진 타입을 나타냅니다.
+
+    열거형을 정의하려면, enum 키워드를 사용하고 이름과 중괄호로 묶인 명명된 변종 집합이 뒤따릅니다.
+
+    다음은 Status 열거형의 예입니다:
+
+    ```rust
+    enum Status {
+      Active,
+      Inactive,
+      Pending,
+    }
+    ```
+
+    열거형의 인스턴스를 생성하려면, 열거형 이름 뒤에 두 개의 콜론(`::`)과 변종 이름을 사용합니다.
+
+    예를 들면:
+
+    ```rust
+    let status = Status::Active;
+    ```
+
+    열거형 변종에 따라 다른 작업을 수행하려면 match 표현식을 사용할 수 있습니다:
+
+    ```rust
+    let user_status = Status::Active;
+    ```
+
+    열거형을 다루려면, 종종 match 표현식을 사용하며, 이를 통해 열거형 변종에 따라 다른 작업을 수행할 수 있습니다:
+
+    ```rust
+    fn print_status_message(status: Status) {
+        match status {
+            Status::Active => println!("사용자가 활성 상태입니다."),
+            Status::Inactive => println!("사용자가 비활성 상태입니다."),
+            Status::Pending => println!("사용자가 보류 중입니다."),
+        }
+    }
+
+    fn main() {
+        let user_status = Status::Active;
+        print_status_message(user_status);
+    }
+    ```
+
+    ---
+
+    ## Tuple Struct, Enum
+
+
+    주로 간결한 표현, 타입 안전성 및 논리적 구조를 위해 사용됩니다.
+
+    - 튜플 구조체 (Tuple Struct): 튜플 구조체는 필드에 이름이 없는 구조체로, 간단한 데이터 구조를 표현할 때 유용합니다. 튜플 구조체를 사용하면, 구조체의 의미를 명확하게 나타낼 수 있으며, 일반 튜플보다 더 강력한 타입 안전성을 제공합니다. 예를 들어, 두 개의 float 값을 나타내는 Point2D와 Vector2D를 구별하기 위해 튜플 구조체를 사용할 수 있습니다. 이렇게 하면 코드의 가독성과 정확성이 향상됩니다.
+    - 열거형 (Enum): 열거형은 서로 관련된 값의 집합을 표현하기 위해 사용됩니다. 열거형은 여러 변종(variants)을 가질 수 있으며, 각 변종은 고유한 타입입니다. 열거형은 논리적으로 관련된 여러 값을 그룹화하여 코드의 명확성과 구조를 개선하는 데 도움이 됩니다. 또한 열거형은 패턴 매칭을 사용하여 값에 따라 다양한 작업을 수행할 수 있어, 런타임에 오류가 발생하는 가능성이 줄어듭니다.
+    - 튜플 열거형 변종 (Tuple Enum Variants): 튜플 열거형 변종은 열거형의 각 변종에 데이터를 연관시키는 데 사용됩니다. 튜플 열거형 변종은 각 변종에 서로 다른 타입과 수의 값을 저장할 수 있습니다. 이러한 변종은 열거형의 다양한 경우를 명확하게 구분하고, 관련 데이터를 함께 저장하여 논리적 구조를 제공하는 데 유용합니다. 패턴 매칭을 사용하면 튜플 열거형 변종의 값을 안전하게 추출하고, 해당 값에 따라 다양한 작업을 수행할 수 있습니다.
+
+    ```rust
+    // 튜플 구조체 (Tuple Struct)
+    struct Point3D(f32, f32, f32);
+
+    // 열거형에 튜플 변종 (Tuple Enum Variant) 포함
+    enum Shape {
+        Circle(f32),
+        Rectangle(f32, f32),
+    }
+
+    fn main() {
+        let point = Point3D(1.0, 2.0, 3.0);
+        let circle = Shape::Circle(5.0);
+        let rectangle = Shape::Rectangle(4.0, 6.0);
+
+        // 튜플 구조체의 값에 접근
+        println!("x 좌표: {}", point.0);
+        println!("y 좌표: {}", point.1);
+        println!("z 좌표: {}", point.2);
+
+        // 튜플 열거형 변종의 값에 접근
+        match circle {
+            Shape::Circle(radius) => println!("원의 반지름: {}", radius),
+            _ => (),
+        }
+    }
+    ```
+
+    ---
+
+    ## Nested
+
+    중첩된 Struct과 Enum을 만들고 싶다면?
+
+    ```rust
+    // 중첩된 구조체 (Nested Struct)
+    struct Address {
+        street: String,
+        city: String,
+    }
+
+    struct Person {
+        name: String,
+        address: Address,
+    }
+
+    // 중첩된 열거형 (Nested Enum)
+    enum Animal {
+        Mammal {
+            species: String,
+            is_domestic: bool,
+        },
+        Reptile {
+            species: String,
+            is_poisonous: bool,
+        },
+    }
+
+    fn main() {
+        let person = Person {
+            name: String::from("지훈"),
+            address: Address {
+                street: String::from("서울로"),
+                city: String::from("서울"),
+            },
+        };
+        let dog = Animal::Mammal {
+            species: String::from("개"),
+            is_domestic: true,
+        };
+    }
+    ```
+
 - title: Returning Nothing
   code: >-
     https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20make_nothing()%20-%3E%20()%20%7B%0A%20%20%20%20return%20()%3B%0A%7D%0A%0A%2F%2F%20the%20return%20type%20is%20implied%20as%20()%0Afn%20make_nothing2()%20%7B%0A%20%20%20%20%2F%2F%20this%20function%20will%20return%20()%20if%20nothing%20is%20specified%20to%20return%0A%7D%0A%0Afn%20main()%20%7B%0A%20%20%20%20let%20a%20%3D%20make_nothing()%3B%0A%20%20%20%20let%20b%20%3D%20make_nothing2()%3B%0A%0A%20%20%20%20%2F%2F%20Printing%20a%20debug%20string%20for%20a%20and%20b%0A%20%20%20%20%2F%2F%20Because%20it's%20hard%20to%20print%20nothingness%0A%20%20%20%20println!(%22The%20value%20of%20a%3A%20%7B%3A%3F%7D%22%2C%20a)%3B%0A%20%20%20%20println!(%22The%20value%20of%20b%3A%20%7B%3A%3F%7D%22%2C%20b)%3B%0A%7D%0A
-- 
GitLab