Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

소개

English

Renk는 Rust의 들여쓰기 기반 문법으로, Rust’s Ugly Syntax에서 영감을 받았다. renk는 .rk 파일을 Rust로 트랜스파일하고, Rust를 다시 Renk로 변환한다.

#[derive(Debug, Clone)]
pub struct User:
    pub id: u64
    pub name: String

impl User:
    pub fn new(id: u64, name: String) -> Self = Self{ id, name }
    pub fn display_name(&self) -> &str = &self.name

pub fn main():
    let user = User.new(1, "Ada".to_string())
    println!("{user.display_name()}")

생성된 Rust:

#[derive(Debug, Clone)]
pub struct User {
    pub id: u64,
    pub name: String,
}
impl User {
    pub fn new(id: u64, name: String) -> Self {
        Self{ id, name }
    }
    pub fn display_name(&self) -> &str {
        &self.name
    }
}
pub fn main() {
    let user = User::new(1, "Ada".to_string());
    println!("{}", user.display_name());
}

Renk는 문법만 바꾼다. 타입, 빌림, 매크로, 크레이트는 Rust 그대로이고, 트랜스파일러가 다시 쓰지 않는 토큰은 Rust로 그대로 통과한다. Rust의 { ... } 블록, :: 경로, ::<T> 터보피시는 언제나 쓸 수 있다.