diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..23baf58 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# 디폴트 무시된 파일 +/shelf/ +/workspace.xml diff --git a/.idea/copyright/Elex_Project.xml b/.idea/copyright/Elex_Project.xml new file mode 100644 index 0000000..72d9189 --- /dev/null +++ b/.idea/copyright/Elex_Project.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..ce14878 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Writerside/c.list b/Writerside/c.list new file mode 100644 index 0000000..c4c77a2 --- /dev/null +++ b/Writerside/c.list @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Writerside/cfg/buildprofiles.xml b/Writerside/cfg/buildprofiles.xml new file mode 100644 index 0000000..7fde4f9 --- /dev/null +++ b/Writerside/cfg/buildprofiles.xml @@ -0,0 +1,17 @@ + + + + + + + + + true + + + + diff --git a/Writerside/images/completion_procedure.png b/Writerside/images/completion_procedure.png new file mode 100644 index 0000000..3535a3f Binary files /dev/null and b/Writerside/images/completion_procedure.png differ diff --git a/Writerside/images/completion_procedure_dark.png b/Writerside/images/completion_procedure_dark.png new file mode 100644 index 0000000..a65beb0 Binary files /dev/null and b/Writerside/images/completion_procedure_dark.png differ diff --git a/Writerside/images/convert_table_to_xml.png b/Writerside/images/convert_table_to_xml.png new file mode 100644 index 0000000..2518a64 Binary files /dev/null and b/Writerside/images/convert_table_to_xml.png differ diff --git a/Writerside/images/convert_table_to_xml_dark.png b/Writerside/images/convert_table_to_xml_dark.png new file mode 100644 index 0000000..4716122 Binary files /dev/null and b/Writerside/images/convert_table_to_xml_dark.png differ diff --git a/Writerside/images/new_topic_options.png b/Writerside/images/new_topic_options.png new file mode 100644 index 0000000..bc6abb6 Binary files /dev/null and b/Writerside/images/new_topic_options.png differ diff --git a/Writerside/images/new_topic_options_dark.png b/Writerside/images/new_topic_options_dark.png new file mode 100644 index 0000000..bf3e48d Binary files /dev/null and b/Writerside/images/new_topic_options_dark.png differ diff --git a/Writerside/r.tree b/Writerside/r.tree new file mode 100644 index 0000000..4fd309b --- /dev/null +++ b/Writerside/r.tree @@ -0,0 +1,18 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Writerside/topics/Function.md b/Writerside/topics/Function.md new file mode 100644 index 0000000..a728b31 --- /dev/null +++ b/Writerside/topics/Function.md @@ -0,0 +1 @@ +# 함수 \ No newline at end of file diff --git a/Writerside/topics/Variable.md b/Writerside/topics/Variable.md new file mode 100644 index 0000000..7955fc1 --- /dev/null +++ b/Writerside/topics/Variable.md @@ -0,0 +1,76 @@ +# 변수 + +## 선언 + +```rust +let x: i32 = 100; +``` + +러스트에서는 `let`을 사용해서 변수를 선언 합니다. 변수명 뒤에는 `:`과 함께 자료형을 명시합니다. + +## 불변성 + +러스트의 변수는 기본적으로 불변(immutable)입니다. 그래서, 한 번 할당된 변수에 새로운 값을 다시 할당할 수는 없습니다. + +```rust +let x = 100; +x = 0; // Compile Error! +``` + +값이 바뀌어야 하는(mutable) 변수를 선언하려면, `mut`를 사용합니다. + +```rust +let mut x = 100; +``` + +## 새도잉 + +불변 변수에 값을 할당하는 것은 불가능하지만, 같은 이름으로 다시 변수를 선언하는 것은 가능합니다. 이를 shadowing이라고 부릅니다. + +```rust +let x = 100; +let x = 5; +``` + +## 자료형 + +러스트에는 다음과 같은 원시 자료형이 존재합니다. + +- i8, i16, i32, i64, i128, isize + +- u8, u16, u32, u64, u128, usize + +- f32, f64 + +- bool + +- String, str + + +isize와 usize는 CPU의 아키텍쳐에 따라 크기가 달라지는 자료형입니다. + +## 타입 추론 + +변수명 뒤에 자료형을 생략해도 컴파일러가 자료형을 추론합니다. + +```rust +let x = 1; // i32 +let y = 1.0; // f64 +``` + +## 형 변환 + +러스트에서 형 변환은 `as`를 사용합니다. + +```rust +let x: f64 = 3.14; +let y = x as i32; +``` + +## 상수 + +러스트에서 상수는 `const`를 사용해서 선언합니다. + +```rust +const MY_VALUE: i32 = 100; +``` \ No newline at end of file diff --git a/Writerside/topics/starter-topic.md b/Writerside/topics/starter-topic.md new file mode 100644 index 0000000..e74422e --- /dev/null +++ b/Writerside/topics/starter-topic.md @@ -0,0 +1,96 @@ +# Rust + +## rustup + +먼저, 러스트 툴체인 인스톨러를 설치합니다. + +```bash +sudo snap install rustup --classic +``` + +```bash +rustup -V # 버전 확인 +``` + +RustUp을 통해서 Rust를 설치합니다. + +```bash +rustup install stable +rustup default stable +``` + +또는 + +```bash +$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh +``` + +## 프로젝트 생성 + +```bash +mkdir my_project +cd my_project +cargo init +``` + +또는, + +```bash +cargo new my_project +``` + +위 명령을 실행하면 프로젝트 폴더에 'Cargo.toml' 과 'src/main.rs' 등의 파일이 생성됩니다. + +### Hello, world! + +위에서 생성된 main.rs 파일은 간단한 헬로 월드 프로그램입니다. + +```rust +fn main() { + println!("Hello, world!"); +} +``` + +`println`은 화면에 한 줄 출력하는 매크로입니다. 러스트에서는 매크로 이름 뒤에 `!`가 붙습니다. + +```bash +cargo build +``` + +`./target/debug` 디렉토리에 실행 파일이 만들어집니다. 다음 명령으로 프로그램을 실행시키면 화면에 'Hello, world!'가 출력됩니다. + +```bash +./target/debug/my_project +``` + +배포용으로 컴파일하려면, release 옵션을 추가합니다. + +```bash +cargo build --release +``` + +`cargo run` 명령을 사용하면 빌드와 동시에 실행할 수 있습니다. + +```bash +cargo run +``` + +또는, + +```bash +cargo run --release +``` + +## rustfmt + +소스 코드를 깔끔하게 정리해 줍니다. + +```bash +rustfmt ./src/main.rs +``` + +또는, 아래 명령으로 전체 소스 파일에 대해 처리할 수 있습니다. + +```bash +cargo fmt +``` \ No newline at end of file diff --git a/Writerside/v.list b/Writerside/v.list new file mode 100644 index 0000000..2d12cb3 --- /dev/null +++ b/Writerside/v.list @@ -0,0 +1,5 @@ + + + + + diff --git a/Writerside/writerside.cfg b/Writerside/writerside.cfg new file mode 100644 index 0000000..04ff70e --- /dev/null +++ b/Writerside/writerside.cfg @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file