diff --git a/images/trpl17-01.odg b/images/trpl17-01.odg new file mode 100644 index 0000000..392ff8b Binary files /dev/null and b/images/trpl17-01.odg differ diff --git a/images/trpl17-02.odg b/images/trpl17-02.odg new file mode 100644 index 0000000..446714a Binary files /dev/null and b/images/trpl17-02.odg differ diff --git a/images/trpl17-03.odg b/images/trpl17-03.odg new file mode 100644 index 0000000..f5a2c87 Binary files /dev/null and b/images/trpl17-03.odg differ diff --git a/images/trpl17-04.odg b/images/trpl17-04.odg new file mode 100644 index 0000000..20f8e52 Binary files /dev/null and b/images/trpl17-04.odg differ diff --git a/images/trpl17-05.odg b/images/trpl17-05.odg new file mode 100644 index 0000000..5381ed9 Binary files /dev/null and b/images/trpl17-05.odg differ diff --git a/images/trpl17-06.odg b/images/trpl17-06.odg new file mode 100644 index 0000000..d94f76f Binary files /dev/null and b/images/trpl17-06.odg differ diff --git a/images/trpl17-07.odg b/images/trpl17-07.odg new file mode 100644 index 0000000..821ad4b Binary files /dev/null and b/images/trpl17-07.odg differ diff --git a/images/trpl17-08.odg b/images/trpl17-08.odg new file mode 100644 index 0000000..79f917a Binary files /dev/null and b/images/trpl17-08.odg differ diff --git a/images/trpl17-09.odg b/images/trpl17-09.odg new file mode 100644 index 0000000..b4a9769 Binary files /dev/null and b/images/trpl17-09.odg differ diff --git a/src/ch17-05-traits-for-async.md b/src/ch17-05-traits-for-async.md index b1b804b..49eccd9 100644 --- a/src/ch17-05-traits-for-async.md +++ b/src/ch17-05-traits-for-async.md @@ -295,12 +295,12 @@ In der Tat kann der Zeiger in `Box` immer noch verschoben werden. Denke daran: Wir wollen sicherstellen, dass die Daten, auf die letztlich referenziert wird, an ihrem Platz bleiben. Wenn ein Zeiger verschoben wird, aber die Daten, auf die er zeigt, an der gleichen Stelle sind, wie in Abbildung 17-7, gibt es kein -potenzielles Problem. (Wie man das mit `Pin`, der ein `Box` umschließt, macht -ist mehr, als wir in dieser speziellen Diskussion behandeln werden. Aber es -wäre eine gute Übung! Wenn du dir die Dokumentationen der Typen und des Moduls -`std::pin` ansiehst, kannst du vielleicht herausfinden, wie du das machen -würdest.) Der Schlüssel ist, dass der selbstreferenzierende Typ selbst nicht -verschoben werden kann, weil er immer noch angeheftet ist. +potenzielles Problem. (Wie man das mit `Pin`macht, das ein `Box` umschließt, +geht über den Umfang dieser Diskussion hinaus. Aber es wäre eine gute Übung! +Wenn du dir die Dokumentationen der Typen und des Moduls `std::pin` ansiehst, +kannst du vielleicht herausfinden, wie du das machen würdest.) Der Schlüssel +ist, dass der selbstreferenzierende Typ selbst nicht verschoben werden kann, +weil er immer noch angeheftet ist. Concurrent work flow @@ -338,7 +338,7 @@ Garantien aufrechterhalten *muss*, um sicher zu sein, wenn ein Zeiger auf diesen Typ in einem `Pin` verwendet wird. Mit anderen Worten, es gibt zwei Dinge über die Beziehung zwischen `Pin` und -`Unpin` zu beachten. Erstens ist `Unpin` der „normale“ Fall, und `!Unpin` der +`Unpin` zu beachten. Erstens ist `Unpin` der „normale“ Fall und `!Unpin` der Spezialfall. Zweitens, ob ein Typ `Unpin` oder `!Unpin` implementiert, spielt *nur* eine Rolle, wenn man einen angepinnten Zeiger auf diesen Typ wie `Pin<&mut SomeType>` verwendet. @@ -350,7 +350,7 @@ einpacken, wie in Abbildung 17-8. Allerdings implementiert `String` automatisch Concurrent work flow -
Abbildung 17-8: Anheften einer Zeichenkette; die gepunkteten Linie +
Abbildung 17-8: Anheften einer Zeichenkette; die gestrichelte Linie deutet an, dass die Zeichenkette das Merkmal `Unpin` implementiert und daher nicht angeheftet ist.
diff --git a/src/img/trpl17-01.svg b/src/img/trpl17-01.svg index 483bf72..9c1481c 100644 --- a/src/img/trpl17-01.svg +++ b/src/img/trpl17-01.svg @@ -1,110 +1,212 @@ - - - - - - - - -cluster_task_a - -Task A - - -cluster_task_b - -Task B - - - -A1 - -A1 - - - -A2 - -A2 - - - - -B1 - -B1 - - - -A1->B1 - - - - - -A3 - -A3 - - - - -B2 - -B2 - - - -A2->B2 - - - - - -A4 - -A4 - - - - -A3->A4 - - - - - - - - -B3 - -B3 - - - -A4->B3 - - - - - - - -B1->A2 - - - - - - -B2->A3 - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Aufgabe A + + + + + + Aufgabe B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A2 + + + + + + + + A3 + + + + + + + + A4 + + + + + + + + B1 + + + + + + + + B2 + + + + + + + + B3 + + + + + + + + A1 + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-02.svg b/src/img/trpl17-02.svg index 5c32a1a..bcba4f3 100644 --- a/src/img/trpl17-02.svg +++ b/src/img/trpl17-02.svg @@ -1,96 +1,205 @@ - - - - - - - - -cluster_ColleagueB - -Task B - - -cluster_ColleagueA - -Task A - - - -B1 - -B1 - - - -B2 - -B2 - - - -B1->B2 - - - - - -B3 - -B3 - - - -B2->B3 - - - - - - - -A1 - -A1 - - - -A2 - -A2 - - - -A1->A2 - - - - - -A3 - -A3 - - - -A2->A3 - - - - - -A4 - -A4 - - - -A3->A4 - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Aufgabe A + + + + + + Aufgabe B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A1 + + + + + + + + A2 + + + + + + + + A3 + + + + + + + + A4 + + + + + + + + B1 + + + + + + + + B2 + + + + + + + + B3 + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-03.svg b/src/img/trpl17-03.svg index ad105a5..40e6b7e 100644 --- a/src/img/trpl17-03.svg +++ b/src/img/trpl17-03.svg @@ -1,110 +1,212 @@ - - - - - - - - -cluster_ColleagueB - -Task A - - -cluster_ColleagueA - -Task B - - - -A1 - -A1 - - - -A2 - -A2 - - - -A1->A2 - - - - - - -A2->A0_1:c - - - - - - -A3 - -A3 - - - -A0_1->A3 - - - - - - - -B1 - -B1 - - - -B2 - -B2 - - - -B1->B2 - - - - - -B3 - -B3 - - - -B2->B3 - - - - - -B3->A3 - - - - - -B4 - -B4 - - - -B3->B4 - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Aufgabe A + + + + + + Aufgabe B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A1 + + + + + + + + A2 + + + + + + + + A3 + + + + + + + + B1 + + + + + + + + B2 + + + + + + + + B3 + + + + + + + + B4 + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-04.svg b/src/img/trpl17-04.svg index fed6c36..e1f51d3 100644 --- a/src/img/trpl17-04.svg +++ b/src/img/trpl17-04.svg @@ -1,30 +1,112 @@ - - - - - - - - - -fut1 - -fut1 - -0 - -1 - -   - - - -fut1:c->fut1:target - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + future1 + + + + + + + 0 + + 1 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-05.svg b/src/img/trpl17-05.svg index e3472ba..b4759d6 100644 --- a/src/img/trpl17-05.svg +++ b/src/img/trpl17-05.svg @@ -1,46 +1,149 @@ - - - - - - - - -%3 - - - -fut1 - - -fut1 - -? - -? - -? - - - -fut2 - -fut2 - -0 - -1 - - - - - -fut2:c->fut1:c - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + future2 + + + + + + + 0 + + 1 + + + + + + + + + + + + + + + + + + + + + + ? + + ? + + ? + + + + + + + + + + + + + + + + + + + + + + + + future1 + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-06.svg b/src/img/trpl17-06.svg index 443bb56..4f34f1b 100644 --- a/src/img/trpl17-06.svg +++ b/src/img/trpl17-06.svg @@ -1,69 +1,180 @@ - - - - - - - - -cluster_box - - -cluster_box_internal - -b1 - - -cluster_deref - -pinned - - - -pinned_box - -Pin - - - - - -pin - - - - -pinned_box:c->pin - - - - -box - -fut - -0 - - - -... - -1 - - - -pin->box:target - - - - - -box:c->box:internal - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + future + + + + + + + 0 + + 1 + + + + + + + + + + + + + + + + + + + + + box1 + + + + + + + + + + + + + + + + Pin + + + + + + + + + + + + + + + + angeheftet + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-07.svg b/src/img/trpl17-07.svg index 712e300..747650a 100644 --- a/src/img/trpl17-07.svg +++ b/src/img/trpl17-07.svg @@ -1,86 +1,209 @@ - - - - - - - - -cluster_not_fut - - -cluster_boxes - - -cluster_box_1 - - -cluster_box_2_internal - -b1 - - -cluster_box_2 - - -cluster_box_2_internal - -b2 - - -cluster_target - -pinned - - - -pin - -Pin - - - - - - - -box2 - - - - -pin:c->box2 - - - - - -fut - -fut - -0 - - - -... - -1 - - - -box2->fut:target - - - - - -fut:c->fut:internal - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + future + + + + + + + 0 + + 1 + + + + + + + + + + + + + + + + + + + + + box1 + + + + + + + + + + + + + + + + Pin + + + + + + + + + + + + + + + + angeheftet + + + + + + + + + + + + + + + + + + + + + box2 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-08.svg b/src/img/trpl17-08.svg index b2275ac..938bb1f 100644 --- a/src/img/trpl17-08.svg +++ b/src/img/trpl17-08.svg @@ -1,57 +1,167 @@ - - - - - - - - -cluster_deref - -String - - - -pinned_box - -Pin - - - - - -pin - - - - -pinned_box:c->pin - - - - -fut - -5usize - -h - -e - -l - -l - -o - - - -pin->fut:target - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String + + + + + + + 5usize + + h + + a + + l + + l + + o + + + + + + + + + + + + + + + Pin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + s1 + + + + + + + + \ No newline at end of file diff --git a/src/img/trpl17-09.svg b/src/img/trpl17-09.svg index 997d9b8..c78ae96 100644 --- a/src/img/trpl17-09.svg +++ b/src/img/trpl17-09.svg @@ -1,85 +1,209 @@ - - - - - - - - -cluster_both - - -cluster_deref - -String - - - -pinned_box - -Pin - - - - - -pin - - - - -pinned_box:c->pin - - - - -string1 - - -s1 - -5usize - -h - -e - -l - -l - -o - - - -string2 - -s2 - -7usize - -g - -o - -o - -d - -b - -y - -e - - - -pin->string2:target - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String + + + + + + + 5usize + + h + + a + + l + + l + + o + + + + + + + + + + + + + + + Pin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + s1 + + + + + + + 7usize + + t + + s + + c + + h + + ü + + s + + s + + + + + + + + + + + + + + + + + s2 + + + + + + + + \ No newline at end of file