These deep changes with pointers holds me back to try out rust. Last I checked rust was a week ago, none of the pointer related documentation or examples were compatible with the head revision. Putting energy of the released version felt bad as that will break soon but head is not that useful without documentation. The same goes since summer, I'm looking for a stable codebase with documentation and base libraries.
Puppet has an inventory system. They call it PuppetDB, but it's basically an interface to an SQL database (eg., PostgreSQL) where the main Puppetmaster process will stores all the information it compiles from manifests. It's a simple schema which allows you to easily query all the hosts, resources and so on.
An interesting side effect of PuppetDB is that it can be exploited within the manifests themselves, via what's known as "exported resources" , allowing nodes to gather information from each other. For example, a web server module can declare that it exports a URL endpoint that needs to be monitored. Then the Nagios module can declare that it wants to know about all URLs to be monitored. The syntax is a bit weird, but it's a rather elegant system.