[Rust]String 데이터 처리 [memo]

6694 단어 Rustmacrostringtech
첫 투고 테스트도 겸하고 조금 다양한 것을 시행할 때 문제가 생겨서 해결해야 한다.

하고 싶은 일


String 변수 a의 문자열을 비우고 값을 반환합니다.

구현 코드


변수 a가 사전에 mutable에서 참고할 수 있다는 것을 전제로 하다
{
let mut b = String::new();
std::mem::swap(&mut a, &mut b);
b
}
의 형식으로 기술하다.
추기:core:mem:take로 만들었어요.WAO.

코드


하나하나 만들어보고 싶은 그런 인코딩도 그렇고, 말하자면 크레페에 전 세계의 함수도 없기 때문에 다음과 같은 맥로를 구성하여 사용하고 있다.
#[macro_export]
/// Takes string inner.
macro_rules! take_string {
   ($var:ident) => {{
   	let mut empty = String::new();
   	std::mem::swap(&mut $var, &mut empty);
   	empty
   	}};
   ($var:expr) => {{
   	let mut empty = String::new();
   	std::mem::swap(&mut $var, &mut empty);
   	empty
   	}};
}
추기:core:mem::take 가능
#[macro_export]
/// Takes string inner.
macro_rules! take {
   ($var:ident) => {
   	core::mem::take(&mut $var)
   };
   ($var:expr) => {{
   	core::mem::take(&mut $var)
   	}};
}
로 수정된 느낌.
또는 이미,use core:mem:take;나는 이렇게 하는 것이 비교적 좋다고 생각한다.

하고 있는 일


빈 문자열을 가진 변수를 만들고 std:mem:swap로 변수 값을 교환합니다. (보충 전)
추기 후:core:mem:take 함수를 이용하여 Option에서take와 같은 일을 했습니다.

이것저것


String에 take를 편입하고 싶습니다.아니면, Zenn은 쓰기가 비교적 쉽다.무겁지 않아요.

좋은 웹페이지 즐겨찾기