Module dochy_core::structs[][src]

Structs

HashMt
JsonDir
LinkedMap
LinkedMapIter
LinkedMapIterMut
LinkedMapUnsafeIter

&LinkedMapから as *const _ as *mut _でポインタを取り出しても良い。 next_mutのようなmut系を呼び出さなければ、&mut参照はされないので安全。もちろん mut 系を呼び出したらアウト これによって、これをベースにLinkedMapIterが作れる

ListDefObj
MetaParam
MetaTable
MetaTables
MutInnerList
MutItem

たとえばキャラクターAとキャラクターBの間で出来事Cが起こったとする。 キャラクターAのIDをa, BのIDをbとする。 グローバルの出来事リストに出来事Cを記録し、next_idからidを振り、そのidをcとする。その出来事のオブジェクトにはaとbもvaluesに記録されている。 AのRelationリストのID bの項目にアクセスし、なければ作成し、insertする。 AのRelationリストbにある出来事ID保持用のlistに出来事ID cを記憶しておく。ID保持用のlistは、idだけで中身のないオブジェクトを集めたlistだ。 同様にキャラクターBのRelationリストaの出来事リストにも、出来事ID cを記録。 これにより、たとえば出来事Cを削除したい場合、Cにあるaとbを読み、AのbにあるID cのものを削除、 Bのaにあるcも削除、さらに出来事リストからCも削除すると、全部消える。 AとBとの間で何があったかの一覧がほしいなら、Aのbにアクセスし、出来事IDリストを取得、出来事リストからid検索し、出来事を取得、という感じになる。 出来事リストのIDはnext_id方式により、時系列に積み上がっていくため、何年何月に起きた出来事はID x から y という情報があれば、 その間の出来事を全部調べたり、一定期間が過ぎた出来事データのうち重要じゃないものは消す、といった処理もできる。 キャラクターBを削除したい場合、他のキャラクターのRelationリストのbの部分を全部消し、BのRelationリストから取れる出来事IDを全部調べて 出来事リストから全部消す、といった感じで消していくことが可能だ。

MutList

追加、削除、順番の変更等ができるリスト ConstListとMutListはstruct定義を見ると近い存在なので、まとめてもいいように思うかもしれないけれど、意味が全く別ものなので型を分けたほうが混乱が少ない。

RefDefMap
RefDefObj
RefSabValue
RootObject
RustFloatArray
RustIntArray
RustString

Enums

ListDefValue
ListSabValue
MetaValue
NullOr
ParamType
Qv
QvType
RootValue
RustMemberType
RustParam
RustValue
UndefOr
VarType

Traits

JsonFile