For what it's worth, your code here all looks correct, so I would be checking for problems elsewhere. (Are you accidentally running a different version of your code? Is all the code exactly as you've pasted it here? Could the incorrect output come from somewhere else in your program?)
Are you only able to get the right symbol in the scope of the called set function?
Do you want to create a global, persistent SymbolsTable that any part of your program, from anywhere, could access? Or do you have something else in mind?
symbols.set: file interpreter.rs in Interpreter.visit_varinitnode line 113.
symbols.get: file interpreter.rs in Interpreter.visit_varaccessnode line 86.
Turns out I was slightly wrong about the locally and globally. It is 'set' and the symbols.get does actually set it. However, it never gets to the 'get' method.
I think I figured it out. I need to pass in a &Context to each of my visit methods, not a Context. However, I'm tired, I have school tomorrow, so I'm going to sleep on it. Thank you for your help.