This clears a lot of Rust-specific String boilerplate, so it's not
necessary to type String::from("foo") every time we want an item
with name "foo". It also makes the code look more similar to the C#
version of the code.
I am leaving the public struct members in because those are more
similar to the matching code in the other languages' implementations.
This is a more idiomatic way of printing the contents of an object
than reaching into its innards. It is also more 1-1 with the original
C# code, which overrides toString for Item.