몇몇 타입이 구조체의 맴버변수를 리턴 못하는 이유

코딩하던 도중에, 구조체의 변수값을 리턴하는 함수를 만들던 도중에 있던일을 적을라고 한다. 일단 구조체에 있는 문자열 변수를 읽는 함수를 제작했다 하자. struct A { num : u32, s : String } impl A { fn get_string(&self) -> String { self.s } /***/ } fn main() { let object = A{num : 0,s : String::from("")}; let _copyS = object.get_string(); /***/ } 다른 언어에서 작성하던것처럼 문자열의 getter를 함수로 만들어 놓고 컴파일 해보니 이런 에러가 뜬다....

December 5, 2021

모듈 임포트

러스트로 코딩하는도중, 소스코드를 분리할 필요성을 느껴 별도의 모듈로 만들고나서 임포트 할려고 할때, 해당 프로젝트안의 로컬 모듈들을 어떻게 임포트 하는지, 기억하기 힘들어 따로 이렇게 글을 작성할 필요성을 느꼇다. 러스트에서는 mod라는 키워드가 있는데, 해당 키워드는 두가지의 기능을 수행한다. c++.c#처럼 네임스페이스 비슷한 기능을 한다. 다른 모듈들을 인클루드 한다. 예시로 이런 코드가 있다고 치자 // path : src/main.rs /* similar c++ namespace module { void hello() { std::cout << "hello world" << std::endl; } }; int main() { module::hello(); return 0; } */ mod module { pub fn hello() { println!...

November 4, 2021

trait를 리턴하는 방법

러스트로 코딩하던 도중에 트레이드를 리턴해야하는 함수를 만들어야 하는 상황이 있었다. 그래서 go언어를 코딩하는것과 마찬가지로 리턴타입을 트레이드(go언어에선 인터페이스)로 하여 리턴 하는 함수를 작성후 컴파일 해본적이 있었는데 그때의 일을 적어볼려고 한다. //go 코드 예시 package main import "fmt" type Hi interface { hi() } type String struct { s string } func new_hi(s string) Hi { return &String{s} } func (s *String)hi() { fmt.Println("hi : "s.s) } func main() { var str = "sunken ahn" new_hi(str)....

October 30, 2021