just to add to the discussion, one function not represented but usually needed is a save/load system.
You can only save/load structs/data assets not instanced objects so it does make sense to use structs as your inventory.
that said for prototyping i also use actors as its just alot easier and modifiying structs is a nightmare.
another option is actor components since it does kinda make sense as an item ‘belongs’ to something, ie an owner actor or a world spawn.
heres my breakdown.
structs - replicate, savable, instance editable - pain to use
data assets, replicate (kinda since it doesnt change), saveable, NOT instance editble. easy to use.
objects, dont replicate(unless in c++), cant save, instance editable, easy to use.
actors, replicate, cant save, instance editable, easy to use, heavy class
actor components, same as actors but more lightweight