• Rust

Rust 함수에서 구조체를 반환해도 될까?

러스트의 함수 반환값은 메모리에서 복사된다. 커 보이는 구조체를 반환해도 괜찮은걸까?

2019. 3. 17

Rust 함수가 구조체를 반환할 때는 memcpy 한다.

What would happen when returning a non-copy struct from a fn? - help - The Rust Programming Language Forum

스택은 힙보다 빠르다. 게다가 보통 데이터가 크다고 하면, 가변 크기의 데이터가 벡터로 전달되는 경우나 긴 String 을 반환하는 경우일 것이다. Vec, String 은 모두 실제 데이터에 대한 스마트 포인터이기 때문에 복사할 크기가 크지 않으므로 반환형을 힙에 올려야 하지 않나 걱정할 필요는 없다.

optimization - Can I efficiently return an object by value in Rust? - Stack Overflow

Rust book 에서는 Box는 너무 큰 데이터의 오너십을 옮기는 경우 사용할 수 있다고 말한다.

Box Points to Data on the Heap and Has a Known Size - The Rust Programming Language

역시 대부분의 경우 데이터는 크지 않다.