목록개발 및 공부/언어 (68)
NeuroWhAI의 잡블로그
MS가 최근 winrt를 Rust로 구현하여 공개했는데 그 예제로 지뢰찾기가 있다. 지뢰찾기 코드를 구경하던 중 아래와 같은 코드(#)를 발견. Rust는 블럭({ ... })도 식으로 평가하기 때문에 while의 조건식에 블럭을 사용할 수 있는 것을 이용한 꼼수이다. while { 수행할 내용들; ... 조건식 } { /* 빈 실제 실행문 */ } 찾아보니 거의 6년전(#)에 나온 꼼수인 듯하다. 근데 사실 보기에 그리 좋진 않다. 간단한 매크로를 만들면 좀 더 보기 괜찮아진다. macro_rules! do_while { ($x:block, $y:expr) => {{ while { $x; $y } {} }}; } fn main() { let mut i = 0; do_while!({ i += 1; }, ..
http://sled.rs/errors Error Handling in a Correctness-Critical Rust Project sled home documentation support blog introduction to sled motivating experiences error handling in Rust Error Handling in a Correctness-Critical Rust Project Let’s begin with two excerpts from the paper Simple Testing Can Prevent Most Critical Failures: An sled.rs 에러를 올바르게 다루는 방법에 대한 글에서 나온 중첩 Result 사용 예가 인상깊어서 가져왔습니다. ..
https://thomashartmann.dev/blog/on-generics-and-associated-types/ On Generics and Associated Types In which we look at traits using generic types (or type parameters) and traits with associated types in Rust. What is the difference and when does it make sense to use one over the other? thomashartmann.dev 제너릭은 대상 타입에 대해 여러 타입 매개변수로 여러번 구현하는 것이 의도일 경우 사용합니다. From처럼 어떤 Foo 타입을 대상으로 impl From for Fo..
https://stjepang.github.io/2020/01/25/build-your-own-block-on.html Build your own block_on() If you’ve ever wondered how block_on from the futures crate works, today we are going to write our own version of the function. stjepang.github.io
#include // 간단한 컨셉 정의. template concept Eq = requires(T a, T b) { { a == b } -> bool; { a != b } -> bool; }; // 다른 컨셉과 여러 제약을 포함하는 컨셉 정의. template concept EqSum = requires(T a, T b) { { a + b } -> T; } && requires(T a) { { a + a } -> T; } && Eq; struct Foo {}; // 간단한 컨셉 사용 예시. template // template requires EqSum // 실제론 이것과 동일. bool is_same(T a, T b) { std::cout
Rust 컴파일러는 기본적으로 모든 타입을 이동 가능한 것으로 취급합니다. 실제로 대부분의 타입은 이동되어도 문제가 없죠. 그러나 세상 사는 게 그렇게 순탄하지는 않습니다. 만약 i32 변수 a와 이를 가리키는 포인터 b가 있고 둘 다 객체 obj의 멤버라고 합시다. obj { a
https://rust-lang.github.io/async-book/02_execution/01_chapter.html Under the Hood: Executing Futures and Tasks - Asynchronous Programming in Rust In this section, we'll cover the underlying structure of how Futures and asynchronous tasks are scheduled. If you're only interested in learning how to write higher-level code that uses existing Future types and aren't interested in the details of how..
#include using namespace std; class Foo { public: void bar() & { cout
C# 8에 더 고급스러운 인덱서 사용을 위해 Index, Range 구조체와 새로운 문법을 지원한다고 하네요.온라인 컴파일러 중에서는 아직 지원하는 걸 못찾아서 예제를 돌려보진 않았습니다 ㅠㅠ int[] arr = { 1, 2, 3, 4 }; var lastIndex = new Index(1, true); int lastNum = arr[lastIndex]; // 4 lastNum = arr[^1]; // 위 코드와 동일 int[] arr = { 1, 2, 3, 4 }; Range range = 1..^1; var sub = arr[range]; // [2, 3] sub = arr[1..^1]; // 위 코드와 동일 var sub2 = arr[1..]; // [2, 3, 4] var sub3 = arr[..