Rust에서 문자열을 연결하는 방법

5844 단어 rust
Rust가 처음이라면 다른 언어에서는 거의 자동으로 수행했던 특정 작업을 수행하는 방법을 다시 배워야 합니다.

swcli에서 작업할 때 사용자 입력을 기반으로 URL을 동적으로 생성해야 했습니다. URL을 만드는 5가지 방법을 찾았습니다. 이제 나는 그 5가지 접근 방식을 공유하고 어떤 접근 방식이 앞으로 가장 좋을지 강조할 것입니다.

굿 ol' + 오퍼레이터



let url = String::from("http://swapi.dev/api/") + &args.attributes + "/" + &args.id;

나는 이것을 이전 template literal 일에서 이월로 시도했습니다. 이것은 Javascript에서 문자열을 연결할 수 있는 방법 중 하나입니다.

Chris Biscardi가 his post 에서 호출한 + 연산자 사용에 대한 제한 사항을 지적해야 합니다. 소유 값에 대해서만 + 연산자를 사용할 수 있습니다. 즉, 문자열 조각에는 +를 사용할 수 없습니다.

매크로 포맷



let url = format!("http://swapi.dev/api/{}/{}", args.attributes, args.id);

rust docs에서 바로:

A common use for format! is concatenation and interpolation of strings.



String 구조체에서 push_str 사용



let mut url = String::from("http://swapi.dev/api/");
url.push_str(&args.attributes);
url.push_str("/");
url.push_str(&args.id);

이 패턴은 훌륭하지만 변경 가능한 참조가 필요합니다. Rust의 모든 것은 기본적으로 불변입니다. 문자열에 대한 변경 가능한 참조를 원하지 않으면 다른 옵션 중 하나를 고려하십시오.

Array.concat()



let url = ["http://swapi.dev/api/", &args.attributes, "/", &args.id].concat();

이 패턴은 배열을 활용하여 항목을 함께 연결합니다. 이것은 문자열을 연결하는 가장 깨끗하고 완전히 효율적인 방법으로 scottmcm에 의해 권장되었습니다.

실제 URL 크레이트



let paths = [&args.attributes, "/", &args.id].concat();
let url = Url::parse("http://swapi.dev/api/")?;
let url = url.join(&paths)?;

기억하신다면 동적으로 URL을 생성해야 했습니다. 내가 시작했어야 하는 것과 URL을 생성해야 하는 경우에도 해야 하는 것은 url crate 을 사용하는 것입니다.
.join() 메서드를 사용하면 URL 및 경로 끝에 하나의 문자열만 추가할 수 있습니다. 이 경우 위에서 언급한 .concat() 접근 방식을 사용하여 cli 인수를 연결한 다음 기본 URL에 결합해야 했습니다.

보다 일반적인 목적으로 문자열을 연결해야 하는 경우 위의 .concat() 권장 사항을 따르십시오.

Stackoverflow 응답 편집



반응이 좋은stackoverflow question도 있다. 몇 가지 추가 세부 사항을 살펴보십시오.

즐거운 코딩! 🤓

좋은 웹페이지 즐겨찾기