From 7fb4d1bc307fff4fab0fe5301332a534caf1866e Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 15 Jul 2020 13:43:33 +0200 Subject: [PATCH 1/1] fix link --- ralf/_posts/2020-07-15-unused-data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ralf/_posts/2020-07-15-unused-data.md b/ralf/_posts/2020-07-15-unused-data.md index ccde204..5f4a771 100644 --- a/ralf/_posts/2020-07-15-unused-data.md +++ b/ralf/_posts/2020-07-15-unused-data.md @@ -31,7 +31,7 @@ fn example(b: bool) -> i32 { I hope it is not very surprising that calling `example` on, e.g., `3` transmuted to `bool` is Undefined Behavior (UB). When compiling `if`, the compiler assumes that `0` and `1` are the only possible values; there is no saying what could go wrong when that assumption is violated. (This is a compiler-understood *validity invariant* that is fixed in the language specification, which is very different from a user-defined *safety invariant*. -See [this earlier post]({% post_url 2018-08-22-two-kinds-of-invariants.md %}) for more details on that distinction.) +See [this earlier post]({% post_url 2018-08-22-two-kinds-of-invariants %}) for more details on that distinction.) What is less obvious is why calling `example` on `3` is UB even when there is no such `if` being executed. To understand why that is important, let us consider the following example: -- 2.30.2