This avoids the need for manual memory management/raw pointers, improves const correctness, improves type safety, simplifies iteration, and simplifies the process of registering a new asset shelf type. Pull Request: https://projects.blender.org/blender/blender/pulls/117770