Vscode-rust: ν˜•μ‹μ΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2019λ…„ 03μ›” 18일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: rust-lang/vscode-rust

μ•ˆλ…•ν•˜μ„Έμš”!

μ½”λ“œλ₯Ό ν˜•μ‹ν™”ν•˜κΈ° μœ„ν•΄ vscodeλ₯Ό κ°€μ Έμ˜¬ 수 μ—†μŠ΅λ‹ˆλ‹€. 였λ₯˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

[Trace - 9:32:34 PM] Received response 'textDocument/formatting - (15)' in 0ms. Request failed: Reformat failed to complete successfully (-32603).
[Error - 9:32:34 PM] Request textDocument/formatting failed.
  Message: Reformat failed to complete successfully
  Code: -32603 

cmdλ₯Ό ν†΅ν•œ rustftm은 λ™μΌν•œ νŒŒμΌμ„ ν¬λ§·ν•©λ‹ˆλ‹€.

무엇을 ν™•μΈν•˜κ±°λ‚˜ κ΅¬μ„±ν•΄μ•Όν•©λ‹ˆκΉŒ?

κ°μ‚¬ν•©λ‹ˆλ‹€!

rustc 1.33.0 (2aa4c46cf 2019-02-28)
rustfmt 1.0.1- μ•ˆμ • (be13559 2018-12-10)
ν™”λ¬Ό 1.33.0 (f099fe94b 2019-02-12)
rustup 1.17.0 (069c88ed6 2019-03-05)

P-High bug rls

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 λ¬Έμ œμ— λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λͺ¨λ“  14 λŒ“κΈ€

방금 VSCode 및 rls-vscode ν”ŒλŸ¬κ·ΈμΈμœΌλ‘œ Rustλ₯Ό 배우기 μ‹œμž‘ν–ˆκ³  같은 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 였λ₯˜ λ©”μ‹œμ§€λ₯Ό ν™•μΈν•˜λ €λ©΄λ³΄κΈ°>보기 μ—΄κΈ°λ₯Ό ν΄λ¦­ν•˜κ³  좜λ ₯ (νŒ¨λ„)을 μž‘μ„±ν•œ λ‹€μŒ Enterλ₯Ό λˆ„λ₯΄μ‹­μ‹œμ˜€.
Ubuntu Budgie 18.04.2 LTS μ‹€ν–‰
rustc 1.33.0 (2aa4c46cf 2019-02-28)
rustfmt 1.0.1- μ•ˆμ • (be13559 2018-12-10)
ν™”λ¬Ό 1.33.0 (f099fe94b 2019-02-12)
rustup 1.17.0 (069c88ed6 2019-03-05)

λΆˆν–‰νžˆλ„ 이것은 RLS 자체의 λ¬Έμ œμž…λ‹ˆλ‹€. λͺ©λ‘μ—μ„œ 높은 μˆ˜μ€€μ΄λ―€λ‘œ 곧 ν•΄κ²° 될 κ²ƒμž…λ‹ˆλ‹€.

μ—…μŠ€νŠΈλ¦Ό λ¬Έμ œκ°€ https://github.com/rust-lang/rls/issues/1397μž…λ‹ˆκΉŒ?

이 λ¬Έμ œμ— λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šμ§€λ§Œ ν˜•μ‹λ„ λ‚΄ μͺ½μ—μ„œ μ•„λ¬΄κ²ƒλ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

같은 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•

ν”„λ‘œμ νŠΈ λ””λ ‰ν† λ¦¬μ—μ„œ "ν™”λ¬Ό fmt"λ₯Ό λ°œν–‰ν•˜μ‹­μ‹œμ˜€. ν˜•μ‹μ„ μ‚¬μš©ν•  μˆ˜μ—†λŠ” μ΄μœ μ— λŒ€ν•œ μžμ„Έν•œ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
제 κ²½μš°μ—λŠ” 툴체인이 cargo-fmt.exeλ₯Ό λ†“μ³€μŠ΅λ‹ˆλ‹€. κ·Έ ν›„ λͺ…λ Ή 쀄과 vscode λ‚΄μ—μ„œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 같은 λ¬Έμ œκ°€ 있고 "cargo fmt"κ°€ 잘 μž‘λ™ν•˜κ³  λͺ…λ Ή μ€„μ—μ„œ μ‹€ν–‰ν•  λ•Œ 였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. VSCode λ‚΄μ—μ„œλ„ 맀우 μ΅œκ·ΌκΉŒμ§€ μž‘λ™ν–ˆμ§€λ§Œ μ΄μ œλŠ” 맀번 μœ„μ˜ 였λ₯˜κ°€λ³΄κ³ λ©λ‹ˆλ‹€.

μ—¬κΈ°μ„œλ„ cargo fmt μž‘λ™ν•˜μ§€λ§Œ Format Document ν•˜λ©΄μ΄ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

[Error - 4:45:32 PM] Request textDocument/formatting failed.
  Message: Reformat failed to complete successfully
  Code: -32603

λ‚˜λŠ” μ‚¬μš©ν•˜κ³ μžˆλ‹€

rustc 1.37.0 (eae3437df 2019-08-13)
rustfmt 1.3.0-stable (d3345024 2019-06-09)
cargo 1.37.0 (9edd08916 2019-08-02)

λ˜ν•œ vscode의 μƒνƒœ ν‘œμ‹œ μ€„μ—μžˆλŠ” RLS [building] μŠ€ν”Όλ„ˆκ°€ λ³€κ²½λ˜μ§€ μ•ŠμœΌλ©° μ €μž₯ν•  λ•Œ μœ„μ˜ 였λ₯˜λ₯Ό μ œμ™Έν•˜κ³ λŠ” 좜λ ₯이 μ—†μŒμ„ μ•Œμ•˜μŠ΅λ‹ˆλ‹€.

μ œλŒ€λ‘œ μž‘λ™ν•˜λŠ” VS Code 1.37을 μ‹€ν–‰ν•˜λŠ” 컴퓨터와 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 1.38.1을 μ‹€ν–‰ν•˜λŠ” λ‹€λ₯Έ 컴퓨터가 μžˆμœΌλ―€λ‘œ 이전 λ¬Έμ œμ—μ„œ νšŒκ·€ ν•œ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

λ‚˜μ²˜λŸΌ Rustλ₯Ό 배우기 μ‹œμž‘ν•œ λ™λ£Œ 초보자λ₯Όμœ„ν•œ κ°„λ‹¨ν•œ κ²½κ³ μž…λ‹ˆλ‹€. rls-vscode μ½”λ“œ ν˜•μ‹μ„ μ§€μ •ν•˜λ €λ©΄ ν”„λ‘œμ νŠΈμ— Cargo.toml 파일이 ν•„μš”ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈμ— Cargo.toml 파일이 ν•„μš”ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.

Cargo.toml νŒŒμΌμ„ μ‚¬μš©ν•΄λ„ μž‘λ™ν•˜μ§€ μ•ŠμŒ :( macOS 10.15μ—μ„œ VS Code 1.40.2λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€-아무 일도 μΌμ–΄λ‚˜μ§€ μ•Šμ§€λ§Œ rustfmt μ‚¬μš©ν•˜μ—¬ ν˜•μ‹μ„ μ‹€ν–‰ν•  λ•Œ 좜λ ₯이 ν‘œμ‹œλ˜κ±°λ‚˜ κΈ°λ‘λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ rustfmt μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

νŽΈμ§‘ : κ²°κ΅­ μž‘μ—…-λ‚΄ VS μ½”λ“œ μ„€μ •μ—μ„œ κΈ°λ³Έ ν¬λ§·ν„°λ‘œ μ„€μ •λ˜μ–΄ Prettierκ°€ 잘λͺ» μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

rustfmtκ°€ μ‹€νŒ¨ν•˜λ©΄ 같은 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” 이것은 rustfmt 의이 문제 와 κ΄€λ ¨λœ 것 κ°™μŠ΅λ‹ˆλ‹€. 특히이 μ½”λ“œλ‘œ 인해 rustfmtκ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€.

match var.name{
    name if 
        //BAD COMMENT causes fmt error
        name.contains("smth")
        // other comment
        | name.contains("smth else") => {true}
    _ => false,
}

λ°œμƒν•œ rls 였λ₯˜λŠ” 맀우 μ‘°μš©ν•©λ‹ˆλ‹€. μ²˜μŒμ—λŠ” 섀정을 ν™•μΈν•˜κ³  rustup (λ„μ›€μ΄λ˜μ§€ μ•ŠμŒ)으둜 rustλ₯Ό μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.
rustfmtλ₯Ό μ‚¬μš©ν•˜μ—¬ μˆ˜λ™μœΌλ‘œ ν¬λ§·ν•˜λ©΄ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€ (λ”°λΌμ„œ rustfmt λ¬Έμ œμ— λŒ€ν•œ 링크).

rustfmt /path/to/file.rs
error[internal]: left behind trailing whitespace
   --> /path/to/file.rs:157:157:19
    |
157 |             name if 
    |                    ^
    |

warning: rustfmt has failed to format. See previous 1 errors.

이 였λ₯˜κ°€ μ—¬μ „νžˆ μˆ˜μ •λ˜μ§€ μ•Šμ€ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰