dietrich
68593ba64d
Builder Pattern Trait Hierarchy Refactoring
We refactored the builder pattern in
[`turtle-lib`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib)
to eliminate inherent method asymmetry and organize all turtle
capabilities into six cohesive traits.
[`builders.rs`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs)
The legacy traits (`DirectionalMovement`, `Turnable`, `CurvedMovement`)
and orphaned inherent methods have been reorganized into six
domain-focused traits:
-
**[`Movement`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs#L14)**:
- `forward()`
- `backward()`
- `go_to()`
- `circle_left()`
- `circle_right()`
-
**[`Rotation`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs#L191)**:
- `left()`
- `right()`
- `set_heading()`
-
**[`Pen`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs#L279)**:
- `pen_up()`
- `pen_down()`
- `set_pen_color()`
- `set_pen_width()`
-
**[`Fill`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs#L393)**:
- `begin_fill()`
- `end_fill()`
- `set_fill_color()`
-
**[`Cursor`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs#L481)**:
- `hide()`
- `show()`
- `shape()`
- `set_shape()`
- `set_speed()`
- `reset()`
-
**[`Text`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs#L646)**:
- `write_text()`
[`TurtlePlan`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/builders.rs#L688)
`TurtlePlan`'s inherent methods are now strictly builder lifecycle
controls:
- `new() -> Self`
- `build(self) -> CommandQueue`
`TurtlePlan` implements `WithCommands`, `Movement`, `Rotation`, `Pen`,
`Fill`, `Cursor`, and `Text`.
-
**[`lib.rs`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/src/lib.rs#L62-L65)**:
Re-exports `Cursor`, `Fill`, `Movement`, `Pen`, `Rotation`, `Text`,
`TurtlePlan`, `WithCommands`.
- **Examples**: Updated
[`clock.rs`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/examples/clock.rs#L8),
[`clock_threaded.rs`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/examples/clock_threaded.rs#L9),
[`dashed_circle.rs`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/examples/dashed_circle.rs#L4),
and
[`bezier.rs`](file:///home/dietrich/Projekte/Source/turtlers/turtle-lib/examples/bezier.rs#L4)
to use `use turtle_lib::*;`.
-
**[`README.md`](file:///home/dietrich/Projekte/Source/turtlers/README.md#L344)**:
Updated trait references in the architecture outline.
---
- **Unit & Doc Tests**:
```bash
cargo test --package turtle-lib
```
Result: 17 unit tests passed; 34 doc-tests passed (0 failed).
- **All Examples**:
```bash
cargo check --package turtle-lib --examples
```
Result: Successfully compiled all 30 examples.
- **Clippy**:
```bash
cargo clippy --package turtle-lib -- -Wclippy::pedantic \
-Aclippy::cast_precision_loss -Aclippy::cast_sign_loss
-Aclippy::cast_possible_truncation
```
Result: 0 warnings in `builders.rs`.
2026-09-19 11:45:57 +02:00
..
2026-09-19 11:45:57 +02:00
2026-09-19 08:19:11 +02:00
2026-01-02 11:45:20 +01:00
2025-10-19 14:19:17 +02:00
2025-10-19 14:19:17 +02:00
2026-09-19 07:51:55 +02:00
2026-09-19 11:45:57 +02:00
2026-09-19 11:45:57 +02:00
2026-09-19 11:45:57 +02:00
2025-10-17 08:59:29 +02:00
2025-10-19 16:39:42 +02:00
2026-09-19 07:51:55 +02:00
2025-10-17 18:38:44 +02:00
2025-10-19 16:39:42 +02:00
2025-10-17 19:17:22 +02:00
2025-10-23 09:40:08 +02:00
2025-10-19 14:19:17 +02:00
2025-10-17 08:59:29 +02:00
2026-09-19 07:51:55 +02:00
2026-05-21 21:50:13 +02:00
2025-10-17 18:38:44 +02:00
2025-10-12 20:31:05 +02:00
2025-10-17 18:38:44 +02:00
2025-10-12 20:31:05 +02:00
2025-10-19 14:19:17 +02:00
2025-10-19 16:39:42 +02:00
2026-09-19 07:51:55 +02:00
2026-01-01 20:40:06 +00:00
2025-10-18 19:50:55 +02:00
2026-05-21 21:50:13 +02:00