Rough sketch of use-site:
let value = ...;
let value2 = ...;
let foo_getter = value_lens!(.foo);
assert_eq!(foo_getter(value), query_value!(value.foo));
assert_eq!(foo_getter(value2), query_value!(value2.foo));
let bar_getter = value_lens!(.bar);
let foo_bar_getter = compose_lens!(foo_getter, bar_getter);
assert_eq!(foo_bar_getter(value), query_value!(value.foo.bar));