목록개발 및 공부 (189)
NeuroWhAI의 잡블로그
12345678910111213141516171819202122use std::ops::Deref; struct Foo { v: T} impl Deref for Foo { type Target = T; fn deref(&self) -> &Self::Target { &self.v }} fn main(){ let foo = Foo { v: 42i32 }; println!("{}", *foo); let foo = Foo { v: "neurowhai" }; println!("{:?}", foo.to_uppercase());}Colored by Color Scriptercs42 "NEUROWHAI"말 그대로 Deref trait을 구현하면 역참조 연산을 오버로딩?할 수 있게 해줍니다.foo.to_uppercase..
Holy cow! Cow는 빌려진 값 또는 소유된 값을 표현할 수 있는 enum 입니다. Clone On Write의 약자로 Cow인데요. 말 그대로 변경이 있을때만 복사와 소유가 일어나는 스마트 포인터(?)라고 소개하고 있네요. 이미 소유된 데이터는 복사가 일어나지 않습니다. 뭔 소리야. 사실 이전의 글들은 다 이거 발견하고 공부한겁니다. ...1234567891011121314151617181920use std::borrow::Cow; fn main(){ let data: i32 = 42; let mut cow = Cow::Borrowed(&data); if let Cow::Owned(_) = cow { println!("Owned???"); } *cow.to_mut() = 1234; // 이 시점에..
1234567891011121314151617181920212223242526272829303132333435363738trait Foo { type T: std::fmt::Display; // 연관 타입 선언 fn set(&mut self, data: &Self::T); fn get(&self) -> &Self::T;} struct Bar { data: i32,} impl Foo for Bar { type T = i32; // 연관 타입 정의 fn set(&mut self, data: &Self::T) { self.data = *data; } fn get(&self) -> &Self::T { &self.data }} // Foo를 구현한 녀석의 참조를 받을건데 Foo의 T는 i32로 정의한 녀석만.fn..
1234567891011121314151617181920212223242526272829303132333435use std::iter::{IntoIterator}; struct Foo(Vec); impl Foo { fn new() -> Foo { Foo(Vec::new()) } fn add(&mut self, item: i32) { self.0.push(item); }} impl IntoIterator for Foo { type Item = i32; type IntoIter = ::std::vec::IntoIter; fn into_iter(self) -> Self::IntoIter { self.0.into_iter() }} fn main(){ let mut foo = Foo::new(); foo.add(..
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566use std::fmt; struct LinearFunction { a: f64, b: f64,} impl LinearFunction { fn new(a: f64, b: f64) -> LinearFunction { LinearFunction { a: a, b: b, } } fn feed(&self, x: f64) -> f64 { self.a * x + self.b } fn learn(&mut self, input: f64, target_output: f64, learning_rate: f..
http://nanapro.org/ https://github.com/cnjinhao/nana C++을 하면서 항상 아쉬웠던게 간단한 GUI 라이브러리가 없던것 이였는데 예전부터 말만 들었고 귀찮아서 안쓰다가 한번 써봤습니다. 어떻게 읽는건지 모르겠지만(나나?) 조금 써봤는데 좋습니다. 제가 알고있는 거의 모든 위젯?컨트롤?을 지원하며 사용도 쉬운 편 입니다. 다만 고성능 그래픽 출력에는 적합한지 의문입니다. 물론 다른 그래픽 라이브러리와 함께 쓸 수 있다는것도 장점이므로 크게 문제되진 않을 듯. 저도 공부삼아 GUI 라이브러리(?)를 만든적이 있는데 (링크) 미완성인데다가 성능도 구리고 지원하는 기능도 별로 없어서 개인 프로젝트에만 활용하고 있습니다. 하지만 이제 이 라이브러리를 활용해 만들면 배포하기..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816..
http://doc.crates.io/build-script.htmlRust를 빌드할때 Rust로 빌드 스크립트를 작성할 수 있습니다.올ㅋ
대충 아래처럼 작동 합니다.Playlist ID: PLETWVpERkQEiFcR61q36BMeOI6prNr0ci 1. 【廃墟系】けもフレEDを最終回っぽくしてみた【アレンジ】 2. Kemono Friends ED - Boku no Friend (Simpsonill Remix) Choose the video number to download. (0: All, q: exit): 0 Start download. Download MbjtzH9JIKo Title: 【廃墟系】けもフレEDを最終回っぽくしてみた【アレンジ】 Quality: 128030 2121970 / 2121970 ╢▌▌▌▌▌▌▌▌▌▌▌╟ 100.00 % 79234.86/s Start conversion. Conversion complete. Done. Do..
C++로 백준 단계별 문제를 하나씩 하고 있는데 쉬운게 나와서 Rust로 해보려고 했으나... 표준라이브러리에 익숙하지가 않아서 구글링 ㅠㅠ12345678910111213// https://stackoverflow.com/questions/30678953/how-to-read-a-single-character-from-input-as-u8 use std::io::{self, Read}; fn main(){ let input = io::stdin() .bytes().next() .and_then(|result| result.ok()) .map(|byte| byte as i32); println!("{}", input.unwrap());}Colored by Color Scriptercs글로 설명하면 공부가 ..