Diffstat (limited to 'src/build/builders/core/value.mmd')
-rw-r--r--src/build/builders/core/value.mmd51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/build/builders/core/value.mmd b/src/build/builders/core/value.mmd
new file mode 100644
index 0000000..806e622
--- /dev/null
+++ b/src/build/builders/core/value.mmd
@@ -0,0 +1,51 @@
+sequenceDiagram
+ participant walker as Walker
+ participant request as RequestHint
+ participant value as Value\nT
+ participant value_borrow as Value\n&'ctx T
+ participant value_temp_borrow as Value\n&'a T
+ participant value_mut_borrow as Value\n&'ctx mut T
+ participant value_temp_mut_borrow as Value\n&'a mut T
+
+ Note over request,value_temp_mut_borrow: ValueBuilder
+
+ rect rgba(120, 120, 120, 0.2)
+ note left of walker: Value Flow\nOwned
+ walker ->> value: visit()
+ end
+ rect rgba(120, 120, 120, 0.2)
+ note left of walker: Value Flow\nContext Borrowed
+ walker ->> value_borrow: visit()
+ end
+ rect rgba(120, 120, 120, 0.2)
+ note left of walker: Value Flow\nTemp Borrowed
+ walker ->> value_temp_borrow: visit()
+ end
+ rect rgba(120, 120, 120, 0.2)
+ note left of walker: Value Flow\nContext Mutable Borrowed
+ walker ->> value_mut_borrow: visit()
+ end
+ rect rgba(120, 120, 120, 0.2)
+ note left of walker: Value Flow\nTemp Mutable Borrowed
+ walker ->> value_temp_mut_borrow: visit()
+ end
+ rect rgba(120, 120, 120, 0.2)
+ note left of walker: Request Hint Flow
+ walker ->> request: request_hint()
+ alt Walker supports by ownership
+ request ->> walker: hint<Value<T>>()
+ walker ->> value: visit()
+ else Walker supports by context borrow
+ request ->> walker: hint<Value<&'ctx T>>()
+ walker ->> value_borrow: visit()
+ else Walker supports by temp borrow
+ request ->> walker: hint<Value<&'a T>>()
+ walker ->> value_temp_borrow: visit()
+ else Walker supports by context mutable borrow
+ request ->> walker: hint<Value<&'ctx mut T>>()
+ walker ->> value_mut_borrow: visit()
+ else Walker supports by tmep mutable borrow
+ request ->> walker: hint<Value<&'a mut T>>()
+ walker ->> value_temp_mut_borrow: visit()
+ end
+ end