Rust에서는 OOP의 특성인 Class 키워드가 없다. 대신에 struct와 impl이 있으므로 이를 혼합하여 사용한다. 다음 예제는 Rust에서 구조적 프로그래밍을 위한 struct, trait, impl 키워드를 살펴볼 것이며 mod 키워드를 통해 다른 rust 파일을 불러와 재사용할 수 있는 모듈(module) 시스템 설명도 포함하였다. 참고로 실행 파일을 static build로 만드는 환경설정은 아래와 같다.
프로젝트 폴더의 Root에 .cargo
폴더를 만들고 이 안에 config
파일을 만든다.
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "target-feature=+crt-static"]
Delphi에서 UniDAC 컴포넌트로 MongoDB에 연결하고 질의하여 그 결과를 가져오는 간단한 예제이다. UniDAC은 상용이므로 델파이를 구매한 경우 FireDAC을 이용하거나 Open Source인 GitHub의 DelphiMongoDB를 활용한다. 참고로 C#에서의 활용법은 IAmTimCorey, Intro to MongoDB with C# 동영상 강좌를 추천한다.
//UniConnection1.SpecificOptions.Values['MongoDB.BSONLibrary'] :=
// 'C:\...\libbson-1.0.dll';
//UniConnection1.SpecificOptions.Values['MongoDB.ClientLibrary'] :=
// 'C:\...\libmongoc-1.0.dll';
//UniQuery1 : Data Type Mapping : string(Database Type) - WideString(Field Type)
//UniQuery1 : Data Type Mapping : null(Database Type) - String(Field Type)
procedure TForm1.Button1Click(Sender: TObject);
var
doc: TMongoDocument; // uses MongoObjectsUni
begin
try
UniQuery1.Close;
UniQuery1.SQL.Clear;
UniQuery1.SQL.Text :=
'{"find":"TestCollection", "filter":{"age":{"$gte": 31}}}';
UniQuery1.Open;
while not UniQuery1.Eof do
begin
doc := UniQuery1.GetObject('TestCollection') as TMongoDocument;
Memo1.Lines.Add(doc.FieldByName['name'].GetData.AsString + ' / '
+ doc.FieldByName['age'].GetData.AsString);
UniQuery1.Next;
end;
except
on E: Exception do
Memo1.Text := E.Message;
end;
end;
Rust(Programming Language)는 Performance, Reliability, Productivity를 목표로 만들어진 개발언어이다. 특히 메모리 안정성에 초점이 맞추어져 있으며 프로그래밍 언어에서 고수준의 인간공학과 저수준의 제어가 조화롭게 구성되어 있다. 또한, 성능 면에서 C++와 비슷한 수준을 목표로 하고 있다. Rust를 학습하는 데 필요한 정보와 Rust만의 특징(References, Ownership, Borrowing, …)이 있는 부분을 기초 예제로 정리하였다.