assert!(식) 매크로는 "식"에 있는 값이 true이면 테스트가 성공한 것으로 여기고, false 이면 에러인 것으로 취급합니다. assert_eq!() 혹은 assert_ne!() 매크로는 2개의 파라미터를 받아들여 에러가 난 경우 두 파라미터의 값이 어떻게 다른지 출력해 줍니다. assert_eq!(rect.left(), 4); assert_eq!(rect.top(), 5); assert!(rect.contains(rect.left(), rect.top())); assert_eq!() 매크로는 실패하면 아래와 같이 좌, 우 파라미터가 어떻게 다른지 자세하게 출력하게 됩니다. Rust의 assert 매크로는 (다른 test framework과 달리) expected vs actual 의 구분이 없..
윈도우에서 Rust로 opencv 라이브러리 에러 발생 chocolatey 설치 https://crates.io/crates/opencv https://chocolatey.org/install#generic 윈도우 powershell을 관리자권한으로 실행합니다 powershell에 아래 내용을 실행하면 choco가 설치됩니다. Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadSt..
Compiling helloworld v0.1.0 (C:\Users\DELL\helloworld) error: linker `link.exe` not found note: The system cannot find the file specified. (os error 2) note: the msvc targets depend on the msvc linker but `link.exe` was not found note: please ensure that VS 2013, VS 2015 or VS 2017 was installed with the Visual C++ option error: aborting due to previous error error: Could not compile `helloworld..
https://crates.io/crates/video-rs video-rs는 ffmpeg의 libav 계열 라이브러리를 사용하는 Rust용 범용 비디오 라이브러리입니다. 읽기, 쓰기, 믹싱, 인코딩 및 디코딩과 같은 많은 일반적인 비디오 작업에 안정적이고 Rusty 인터페이스를 제공합니다. 설치 먼저 ffmpeg 라이브러리를 설치합니다. 그런 다음 Cargo.toml의 종속성에 다음을 추가합니다: video-rs = "0.4" ndarray 크레이트에서 원시 프레임을 사용할 수 있게 하려면 ndarray 기능을 사용합니다: video-rs = { version = "0.4", features = ["ndarray"] } 예제 Decode a video and print the RGB value for ..
웹상에서 이미지 load하면 해당 이미지를 onnx모델로 run하고 웹상으로 띄어줍니다. use std::{sync::Arc, path::Path}; use image::{GenericImageView, imageops::FilterType}; use ndarray::{Array, IxDyn, s, Axis}; use ort::{Environment,SessionBuilder,tensor::InputTensor}; use rocket::{response::content,fs::TempFile,form::Form}; use video_rs::{self, Decoder, Locator}; use std::path::PathBuf; use video_rs::{Encoder, EncoderSettings, Ti..
PyO3는 파이썬에서 러스트 코드를 실행할수 있고 반대로 러스트에서 파이썬 코드를 실행할 수 있도록 도와주는 크레이트 입니다. maturin maturin으로 프로젝트를 생성합니다. maturin init -b pyo3 프로젝트를 생성하면 아래와 같이 폴더가 만들어집니다. . ├── Cargo.lock ├── Cargo.toml ├── Pipfile ├── pyproject.toml ├── src └── lib.rs Cargo.toml pyproject.toml 파일에서 패키지와 라이브러리 프로젝트 이름을 변경합니다. 라이브러리 크레이트를 만듭니다. #[pyfunction],#[pymodule]은 PyO3 라이브러리에서 제공하는 Attribute입니다. 러스트 함수를 파이썬 함수로 정의하는데 사용합니다...
타입들이 공통적으로 갖는 동작에 대하여 추상화하도록 해줍니다. 러스트의 Trait은 java의 interface, python의 class기능과 유사합니다. trait을 제네릭 파라미터의 타입으로 사용하는 상황에서 trait bound를 통해 서로 다른 구조체에 연관성을 제공할 수 있습니다. 쉽게 말해 일종의 인터페이스로, 정의되지 않은 메서드의 선언들을 가질 수 있습니다. Tait 구조 trait 트레잇명 { 선언들 } 트레잇은 impl 키워드를 통해서 구조체(클래스)에 구현됩니다. impl 트레잇명 for 구조체명 { 구현들 } Trait 구현 정적 메서드만 가지는 간단한 트레잇 소스입니다. trait Foo{ fn foo(); } struct Boom{ } impl Foo for Boom{ fn f..