diff --git a/docs/15_ko.html b/docs/15_ko.html index e987c4c1d9dcb43131468db7a3404c7d685f3ae1..3d474a45727bb6cb28b03115998b07f94072a3a1 100644 --- a/docs/15_ko.html +++ b/docs/15_ko.html @@ -71,7 +71,7 @@ fn main() { </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=2021&code=%2F%2F+%EC%97%B4%EA%B1%B0%ED%98%95+%EC%A0%95%EC%9D%98%3A+%EC%97%AC%EB%9F%AC+%EB%8F%84%ED%98%95%EC%9D%84+%EB%82%98%ED%83%80%EB%83%85%EB%8B%88%EB%8B%A4.%0Aenum+Shape+%7B%0A++++Circle+%7B+radius%3A+f64+%7D%2C%0A++++Square+%7B+side%3A+f64+%7D%2C%0A++++Rectangle+%7B+width%3A+f64%2C+height%3A+f64+%7D%2C%0A%7D%0A%0A%2F%2F+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+calculate_area%28shape%3A+Shape%29+-%3E+f64+%7B%0A++++%2F%2F+%ED%8C%A8%ED%84%B4+%EB%A7%A4%EC%B9%AD%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%8F%84%ED%98%95%EC%9D%98+%EC%A2%85%EB%A5%98%EC%97%90+%EB%94%B0%EB%9D%BC+%EA%B3%84%EC%82%B0+%EB%B0%A9%EC%8B%9D%EC%9D%84+%EC%84%A0%ED%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle+%7B+radius+%7D+%3D%3E+std%3A%3Af64%3A%3Aconsts%3A%3API+*+radius+*+radius%2C+%2F%2F+%EC%9B%90%EC%9D%98+%EB%84%93%EC%9D%B4+%EA%B3%84%EC%82%B0%0A++++++++Shape%3A%3ASquare+%7B+side+%7D+%3D%3E+side+*+side%2C++++++++++++++++++++++++++++++%2F%2F+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4+%EA%B3%84%EC%82%B0%0A++++++++Shape%3A%3ARectangle+%7B+width%2C+height+%7D+%3D%3E+width+*+height%2C+++++++++++++++%2F%2F+%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4+%EA%B3%84%EC%82%B0%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++%2F%2F+%EC%97%AC%EB%9F%AC+%EB%8F%84%ED%98%95+%EC%83%9D%EC%84%B1%0A++++let+circle+%3D+Shape%3A%3ACircle+%7B+radius%3A+5.0+%7D%3B%0A++++let+square+%3D+Shape%3A%3ASquare+%7B+side%3A+4.0+%7D%3B%0A++++let+rectangle+%3D+Shape%3A%3ARectangle+%7B%0A++++++++width%3A+6.0%2C%0A++++++++height%3A+3.0%2C%0A++++%7D%3B%0A%0A++++%2F%2F+%ED%8C%A8%ED%84%B4+%EB%A7%A4%EC%B9%AD%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EA%B3%A0+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++let+circle_area+%3D+calculate_area%28circle%29%3B%0A++++let+square_area+%3D+calculate_area%28square%29%3B%0A++++let+rectangle_area+%3D+calculate_area%28rectangle%29%3B%0A%0A++++println%21%28%22%EC%9B%90%EC%9D%98+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+circle_area%29%3B%0A++++println%21%28%22%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+square_area%29%3B%0A++++println%21%28%22%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+rectangle_area%29%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/19_ko.html b/docs/19_ko.html index 6dc6c3dd07d1d308f04f89c2446e2ec65a8611b7..e566377106ae9186ee16bddf99a2ad5844c6df1c 100644 --- a/docs/19_ko.html +++ b/docs/19_ko.html @@ -50,7 +50,9 @@ <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 class="code"> + <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EC%86%8C%EC%9C%A0%EA%B6%8C%2C+%EB%B9%8C%EB%A6%BC%2C+%EC%B0%B8%EC%A1%B0%2C+%EB%B2%94%EC%9C%84+%EB%93%B1%EC%9D%98+%EA%B8%B0%EB%8A%A5%EC%9D%84+%ED%95%9C+%EB%B2%88%EC%97%90+%EC%82%AC%EC%9A%A9%0D%0A%23%5Bderive%28Debug%29%5D%0D%0Astruct+MyStruct+%7B%0D%0A++++data%3A+String%2C%0D%0A%7D%0D%0A%0D%0Afn+print_and_modify%28s%3A+%26mut+MyStruct%29+%7B%0D%0A++++println%21%28%22%5Ct%3E+MyStruct%EB%A5%BC+%EC%B0%B8%EC%A1%B0%3A+%7B%3A%3F%7D%22%2C+s%29%3B%0D%0A++++s.data.push_str%28%22+%EC%88%98%EC%A0%95%EB%90%A8%22%29%3B%0D%0A%7D%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+mut+my_struct1+%3D+MyStruct+%7B%0D%0A++++++++data%3A+String%3A%3Afrom%28%22MyStruct1%22%29%2C%0D%0A++++%7D%3B%0D%0A%0D%0A++++let+mut+my_struct2+%3D+MyStruct+%7B%0D%0A++++++++data%3A+String%3A%3Afrom%28%22MyStruct2%22%29%2C%0D%0A++++%7D%3B%0D%0A%0D%0A++++%2F%2F+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%3A+%7B%3A%3F%7D%22%2C+%26my_struct1%29%3B%0D%0A%0D%0A++++%2F%2F+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC+%EC%88%98%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++print_and_modify%28%26mut+my_struct1%29%3B%0D%0A++++println%21%28%22%EC%88%98%EC%A0%95%EB%90%9C+MyStruct1%3A+%7B%3A%3F%7D%22%2C+my_struct1%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%B2%94%EC%9C%84%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%B9%8C%EB%A6%BC%EC%9D%98+%EA%B7%9C%EC%B9%99%EC%9D%84+%EB%B3%B4%EC%97%AC%EC%A4%8D%EB%8B%88%EB%8B%A4.%0D%0A++++%7B%0D%0A++++++++let+mut_ref+%3D+%26mut+my_struct2%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++++++print_and_modify%28mut_ref%29%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%ED%95%A8%EC%88%98%EC%97%90+%EC%A0%84%EB%8B%AC%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++++++%2F%2F+%EC%9D%B4+%EC%A7%80%EC%A0%90%EC%97%90%EC%84%9C+mut_ref%EB%A5%BC+%EB%8D%94+%EC%9D%B4%EC%83%81+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++%7D%0D%0A%0D%0A++++%2F%2F+%EB%B2%94%EC%9C%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%9C+%ED%9B%84%EC%97%90%EB%8A%94+%EC%9B%90%EB%9E%98+%EB%B3%80%EC%88%98%EB%A5%BC+%EB%8B%A4%EC%8B%9C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22%EC%88%98%EC%A0%95%EB%90%9C+MyStruct2%3A+%7B%3A%3F%7D%22%2C+my_struct2%29%3B%0D%0A%0D%0A++++%2F%2F+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EC%9D%B4%EB%8F%99%EC%8B%9C%ED%82%B5%EB%8B%88%EB%8B%A4.%0D%0A++++let+my_struct3+%3D+MyStruct+%7B%0D%0A++++++++data%3A+String%3A%3Afrom%28%22MyStruct3%22%29%2C%0D%0A++++%7D%3B%0D%0A++++let+my_struct4+%3D+my_struct3%3B+%2F%2F+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EC%9D%B4%EB%8F%99%EC%8B%9C%ED%82%B5%EB%8B%88%EB%8B%A4.%0D%0A++++%2F%2F+%EC%9D%B4%EC%A0%9C+my_struct3%EC%9D%80+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+%EC%9D%B4%EB%8F%99%EB%90%9C+MyStruct4%3A+%7B%3A%3F%7D%22%2C+my_struct4%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> document.addEventListener("DOMContentLoaded", function() { diff --git a/docs/tour.js b/docs/tour.js index ff1e295d260d631fad0cd2bb843544ece9501dc9..8ac68098c300d7deeb996b6b17b1f5c016eaed7e 100644 --- a/docs/tour.js +++ b/docs/tour.js @@ -1,105 +1,68 @@ const triggerLinkClick = direction => { const link = document.querySelector(`.${direction} a`); - if (link) { - link.click(); - } + link && link.click(); }; -var xDown = null; -var yDown = null; - -const handleTouchStart = evt => { - xDown = evt.touches[0].clientX; - yDown = evt.touches[0].clientY; +const handleTouchStart = ({ touches }) => { + [xDown, yDown] = [touches[0].clientX, touches[0].clientY]; }; -const handleTouchMove = evt => { - if (!xDown || !yDown) { - return; - } +const handleTouchMove = ({ touches, target }) => { + if (!xDown || !yDown) return; - var touchTarget = evt.target; + let touchTarget = target; while (touchTarget) { - if ( - touchTarget.tagName === "CODE" && - touchTarget.parentElement.tagName === "PRE" - ) { - // ignore swipe on pre > code elements - return; - } - touchTarget = touchTarget.parentElement; + const { tagName, parentElement } = touchTarget; + if (tagName === "CODE" && parentElement.tagName === "PRE") return; + touchTarget = parentElement; } - var xUp = evt.touches[0].clientX; - var yUp = evt.touches[0].clientY; - - var xDiff = xDown - xUp; - var yDiff = yDown - yUp; + const [xUp, yUp] = [touches[0].clientX, touches[0].clientY]; + const [xDiff, yDiff] = [xDown - xUp, 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"); - } + triggerLinkClick(xDiff > 0 ? "next" : "back"); } - /* reset values */ - xDown = null; - yDown = null; + [xDown, yDown] = [null, null]; } }; -let activeEl = null; -document.addEventListener( - "focus", - event => { - activeEl = event.target; - }, - true -); +const onKeyUp = e => { + if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) return; -const setupKeys = () => { - // PC - document.body.addEventListener("keyup", e => { - if (e.ctrlKey || e.altKey || e.metaKey || e.shiftKey) { - return; - } + // const { tagName } = document.activeElement; + // if (tagName === "SPAN") return; - if (document.activeElement.tagName === "SPAN") { - // ignore keys on pre > code elements + const hasScrollableParent = el => el.scrollWidth > el.clientWidth; + let el = document.activeElement; + while (el && el !== document.body) { + if (hasScrollableParent(el) && el.tagName !== "A") { + e.preventDefault(); return; } + el = el.parentElement; + } - // check if the active element has a scrollable parent - const hasScrollableParent = el => el.scrollWidth > el.clientWidth; - let el = document.activeElement; - while (el) { - if (el === document.body) { - break; // stop checking if we reach the body element - } - if (hasScrollableParent(el) && el.tagName !== "A") { - e.preventDefault(); - return; - } - el = el.parentElement; - } + const { key } = e; + if (key === "Right" || key === "ArrowRight") { + triggerLinkClick("next"); + } else if (key === "Left" || key === "ArrowLeft") { + triggerLinkClick("back"); + } +}; - if (e.key === "Right" || e.key === "ArrowRight") { - triggerLinkClick("next"); - } - if (e.key === "Left" || e.key === "ArrowLeft") { - triggerLinkClick("back"); - } - }); +const setupKeys = () => { + document.body.addEventListener("keyup", onKeyUp); }; +// document.addEventListener("focus", ({ target }) => { +// activeEl = target; +// }, true); + document.addEventListener("touchstart", handleTouchStart, false); document.addEventListener("touchmove", handleTouchMove, false); setupKeys(); -// in iframe, should not be same const iframeElement = document.querySelector("iframe"); if (iframeElement) { setupKeys(); diff --git a/frontend/lessons/ko/chapter_1.yaml b/frontend/lessons/ko/chapter_1.yaml index 8c0e32b22a5bd45f77e0b679aab3a8e300dd7700..26d04df574d040b419bf7949a7c0eacb7e2acfd3 100644 --- a/frontend/lessons/ko/chapter_1.yaml +++ b/frontend/lessons/ko/chapter_1.yaml @@ -220,7 +220,7 @@ 우리는 더 많은 형태로 볼 것이며, 이를 통해 데이터 구조의 하위 요소를 직관적으로 추출할 수 있습니다. - title: match 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+%EC%97%B4%EA%B1%B0%ED%98%95+%EC%A0%95%EC%9D%98%3A+%EC%97%AC%EB%9F%AC+%EB%8F%84%ED%98%95%EC%9D%84+%EB%82%98%ED%83%80%EB%83%85%EB%8B%88%EB%8B%A4.%0Aenum+Shape+%7B%0A++++Circle+%7B+radius%3A+f64+%7D%2C%0A++++Square+%7B+side%3A+f64+%7D%2C%0A++++Rectangle+%7B+width%3A+f64%2C+height%3A+f64+%7D%2C%0A%7D%0A%0A%2F%2F+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+calculate_area%28shape%3A+Shape%29+-%3E+f64+%7B%0A++++%2F%2F+%ED%8C%A8%ED%84%B4+%EB%A7%A4%EC%B9%AD%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%8F%84%ED%98%95%EC%9D%98+%EC%A2%85%EB%A5%98%EC%97%90+%EB%94%B0%EB%9D%BC+%EA%B3%84%EC%82%B0+%EB%B0%A9%EC%8B%9D%EC%9D%84+%EC%84%A0%ED%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle+%7B+radius+%7D+%3D%3E+std%3A%3Af64%3A%3Aconsts%3A%3API+*+radius+*+radius%2C+%2F%2F+%EC%9B%90%EC%9D%98+%EB%84%93%EC%9D%B4+%EA%B3%84%EC%82%B0%0A++++++++Shape%3A%3ASquare+%7B+side+%7D+%3D%3E+side+*+side%2C++++++++++++++++++++++++++++++%2F%2F+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4+%EA%B3%84%EC%82%B0%0A++++++++Shape%3A%3ARectangle+%7B+width%2C+height+%7D+%3D%3E+width+*+height%2C+++++++++++++++%2F%2F+%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4+%EA%B3%84%EC%82%B0%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++%2F%2F+%EC%97%AC%EB%9F%AC+%EB%8F%84%ED%98%95+%EC%83%9D%EC%84%B1%0A++++let+circle+%3D+Shape%3A%3ACircle+%7B+radius%3A+5.0+%7D%3B%0A++++let+square+%3D+Shape%3A%3ASquare+%7B+side%3A+4.0+%7D%3B%0A++++let+rectangle+%3D+Shape%3A%3ARectangle+%7B%0A++++++++width%3A+6.0%2C%0A++++++++height%3A+3.0%2C%0A++++%7D%3B%0A%0A++++%2F%2F+%ED%8C%A8%ED%84%B4+%EB%A7%A4%EC%B9%AD%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EA%B3%A0+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++let+circle_area+%3D+calculate_area%28circle%29%3B%0A++++let+square_area+%3D+calculate_area%28square%29%3B%0A++++let+rectangle_area+%3D+calculate_area%28rectangle%29%3B%0A%0A++++println%21%28%22%EC%9B%90%EC%9D%98+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+circle_area%29%3B%0A++++println%21%28%22%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+square_area%29%3B%0A++++println%21%28%22%EC%A7%81%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+rectangle_area%29%3B%0A%7D%0A content_markdown: > Rust에서 match 키워드는 패턴 매칭을 위해 사용하고 @@ -464,8 +464,8 @@ content_markdown: > Error handling - title: Chapter 1 - 마무리 - source: >- - /ferris_lofi.png + code: >- + https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EC%86%8C%EC%9C%A0%EA%B6%8C%2C+%EB%B9%8C%EB%A6%BC%2C+%EC%B0%B8%EC%A1%B0%2C+%EB%B2%94%EC%9C%84+%EB%93%B1%EC%9D%98+%EA%B8%B0%EB%8A%A5%EC%9D%84+%ED%95%9C+%EB%B2%88%EC%97%90+%EC%82%AC%EC%9A%A9%0D%0A%23%5Bderive%28Debug%29%5D%0D%0Astruct+MyStruct+%7B%0D%0A++++data%3A+String%2C%0D%0A%7D%0D%0A%0D%0Afn+print_and_modify%28s%3A+%26mut+MyStruct%29+%7B%0D%0A++++println%21%28%22%5Ct%3E+MyStruct%EB%A5%BC+%EC%B0%B8%EC%A1%B0%3A+%7B%3A%3F%7D%22%2C+s%29%3B%0D%0A++++s.data.push_str%28%22+%EC%88%98%EC%A0%95%EB%90%A8%22%29%3B%0D%0A%7D%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+mut+my_struct1+%3D+MyStruct+%7B%0D%0A++++++++data%3A+String%3A%3Afrom%28%22MyStruct1%22%29%2C%0D%0A++++%7D%3B%0D%0A%0D%0A++++let+mut+my_struct2+%3D+MyStruct+%7B%0D%0A++++++++data%3A+String%3A%3Afrom%28%22MyStruct2%22%29%2C%0D%0A++++%7D%3B%0D%0A%0D%0A++++%2F%2F+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%3A+%7B%3A%3F%7D%22%2C+%26my_struct1%29%3B%0D%0A%0D%0A++++%2F%2F+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC+%EC%88%98%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++print_and_modify%28%26mut+my_struct1%29%3B%0D%0A++++println%21%28%22%EC%88%98%EC%A0%95%EB%90%9C+MyStruct1%3A+%7B%3A%3F%7D%22%2C+my_struct1%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%B2%94%EC%9C%84%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%B9%8C%EB%A6%BC%EC%9D%98+%EA%B7%9C%EC%B9%99%EC%9D%84+%EB%B3%B4%EC%97%AC%EC%A4%8D%EB%8B%88%EB%8B%A4.%0D%0A++++%7B%0D%0A++++++++let+mut_ref+%3D+%26mut+my_struct2%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++++++print_and_modify%28mut_ref%29%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%ED%95%A8%EC%88%98%EC%97%90+%EC%A0%84%EB%8B%AC%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++++++%2F%2F+%EC%9D%B4+%EC%A7%80%EC%A0%90%EC%97%90%EC%84%9C+mut_ref%EB%A5%BC+%EB%8D%94+%EC%9D%B4%EC%83%81+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++%7D%0D%0A%0D%0A++++%2F%2F+%EB%B2%94%EC%9C%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%9C+%ED%9B%84%EC%97%90%EB%8A%94+%EC%9B%90%EB%9E%98+%EB%B3%80%EC%88%98%EB%A5%BC+%EB%8B%A4%EC%8B%9C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22%EC%88%98%EC%A0%95%EB%90%9C+MyStruct2%3A+%7B%3A%3F%7D%22%2C+my_struct2%29%3B%0D%0A%0D%0A++++%2F%2F+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EC%9D%B4%EB%8F%99%EC%8B%9C%ED%82%B5%EB%8B%88%EB%8B%A4.%0D%0A++++let+my_struct3+%3D+MyStruct+%7B%0D%0A++++++++data%3A+String%3A%3Afrom%28%22MyStruct3%22%29%2C%0D%0A++++%7D%3B%0D%0A++++let+my_struct4+%3D+my_struct3%3B+%2F%2F+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EC%9D%B4%EB%8F%99%EC%8B%9C%ED%82%B5%EB%8B%88%EB%8B%A4.%0D%0A++++%2F%2F+%EC%9D%B4%EC%A0%9C+my_struct3%EC%9D%80+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+%EC%9D%B4%EB%8F%99%EB%90%9C+MyStruct4%3A+%7B%3A%3F%7D%22%2C+my_struct4%29%3B%0D%0A%7D%0D%0A content_markdown: > Rust의 기초는 그렇게 나쁘지 않죠?