[Rust] Slint: ์์ํ๊ธฐ
Slint๋ Rust๋ก ๊ตฌํ๋ GUI ๊ฐ๋ฐ ํดํท ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
์ต๊ทผ์ 1.0 ๋ฒ์ ์ด ๋ฐฐํฌ๋์๋ค.
์๋์ฐ์ฆ, Mac, Linux ๋ฉํฐํ๋ซํผ์ ์ง์ํ๋ฉฐ ์น์ด์
๋ธ๋ฆฌ ๊ธฐ๋ฐ์ ์นํ์ด์ง๋ ์ง์ํ๋ค.
๋ญ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๋ฒ ๋๋๋ ์ง์ํ๋ค๊ณ ํ๋ค.
๊ฐ๋ฐ ์ธ์ด๋ Rust์ C++์ ์ง์ํ๊ณ , Javascript๋ ์คํ ๋จ๊ณ์ธ ๊ฒ ๊ฐ๋ค. ๊ฐ์ฅ ์ ์ง์๋๋๊ฑด Rust๋ค.
๊ตฌ์กฐ๋ ๋ญ ์ด๋ฐ์์ด๋ผ๊ณ ํ๋ค.
slint๋ผ๋ ์์ฒด ์ธ์ด๋ฅผ ์ฌ์ฉํด์ UI ๊ตฌ์กฐ ๋ฑ์ ์ ์ํ๊ณ ์คํํ๋ค๋๊ฒ ํน์ง์ด๋ค.
๊ทธ๋์ Rust๋ฅผ ์ฐ๋๋ผ๋ ๋ด๋ถ์ slint ์ฝ๋๋ฅผ ์ ์ํด์ ์ฌ์ฉํ๋ ํํ๋ก ์์ฉ์ด ๋๋ค.
๋ผ์ด์ผ์ค
์์ ํ ์์ ์คํ์์ค๋ ์๋๋ค.
๊ณต์ง๋ก ์ฐ๊ณ ์ถ๋ค๋ฉด GPLv3 ๋ผ์ด์ผ์ค์ ๊ธฐ๋ฐํด์ ์คํ์์ค๋ฅผ ๊ฐ๋ฐํ๋๋ฐ ์จ์ผํ๊ณ ,
์์
์ฉ์ผ๋ก ์ฌ์ฉํ๋ค๋ฉด ์ ๋ฃ ๋ผ์ด์ผ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์๋ณ 5์ ๋ก๋ถํฐ ์์ํ๋ค.
https://slint.dev/pricing
๋น์ฉ์ ๋ด๊ณ ์ถ์ง ์๊ณ , ์คํ์์ค๋ก ๋ง๋ค๊ณ ์ถ์ง๋ ์๋ค๋ฉด ๋ก์ดํฐ-free ๋ผ์ด์ผ์ค๋ผ๋ ๊ฒ์ ์ ์ฉํ ์๋ ์๋ค.
๋ช๊ฐ์ง ๊ท์ฐฎ์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์์ผ์ฃผ๋ฉด ๋๋ค.
ํ๋ก๊ทธ๋จ ๋ฐฐํฌ ์ฌ์ดํธ์ slint ์จ์ ๋ง๋ ๊ฑฐ๋ผ๊ณ ์์ด์ฝ ๋ฌ์์ฃผ๊ณ ๋ญ ๊ทธ๋ฐ๊ฑธ ํ๋ฉด ๋๋ค.
์๋ ๋งํฌ์ ๋ค์ด๊ฐ๋ฉด ๋ค ์ ํ์๋ค.
https://github.com/slint-ui/slint/blob/master/FAQ.md#licensing
์ค์น
๊ธฐ๋ณธ ์ค์ ์ ๊ฐ๋จํ๋ค. ์ข ์์ฑ ํ๋๋ง ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
cargo add slint@1.1.0

Hello World ์์ฑํ๊ธฐ
๊ฐ๋จํ๊ฒ ํ
์คํธ ํ๋ ๋ค์ด์๋ ์๋์ฐ ํ๋ก๊ทธ๋จ์ ๊ตฌํํด๋ณด๊ฒ ๋ค.
slint๋ ๋งคํฌ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋์ฐ ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๋ค.
์๋๋ ๊ฐ๋จํ ์์ ์ฝ๋๋ค.
fn main() {
let window = MainWindow::new().unwrap();
window.run().unwrap()
}
slint::slint! {
export component MainWindow inherits Window {
height: 200px;
width: 300px;
Text {
text: "hello world";
color: green;
}
}
}
์ ๋๋ก ์คํํ๋ฉด
์ด๋ฐ์์ผ๋ก ์ฐฝ์ด ๋ฐ ๊ฒ์ด๋ค.

Visual Studio Code ํ์ฅ
Rust์ ๋งคํฌ๋ก์๋ ๊ณ ์ง์ ์ธ ๋จ์ ์ด ์๋ค. ์๋์์ฑ์ด๋ ์ ํ์ค ํ์ด๋ผ์ดํ ์ด ๊ฑฐ์ ์๋๋ค๋ ๊ฒ์ด๋ค.
Slint์์๋ ํ์ฅ๋๊ตฌ๋ฅผ ํตํด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๊น์์ฃผ๊ธฐ๋ง ํ๋ฉด
๋ถํธํจ์ด ์ข ํด์๋๋ค.
Slint ์ธ์ด
์์ฒด์ ์ผ๋ก ์ฌ์ฉํ๋ slint ์ธ์ด์ ๋ํด์๋ ์ข ์ตํ๊ธด ํด์ผ ํ๋ค.
์ ์ฉ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๋ค.
https://slint.dev/releases/1.1.0/docs/slint/
์ฐธ์กฐ
https://github.com/slint-ui/slint
https://slint.dev/blog/announcing-slint-1.0
https://slint.dev/releases/1.1.0/docs/tutorial/rust/getting_started