message: metalos: define host config structs in thrift
  Summary:
  Use Thrift for serialization, still serve over HTTPS
  NOTE: OSS support for thrift_library is covered in the next diff
diff: @@ -139,7 +139,7 @@ fn expand_attrs_derive(data: Data, name: Ident) -> Result<proc_macro2::TokenStre
  let has_attr_items = expose_fields.iter().map(|f| f.has_attr_match_item());
  let has_attr = quote! {
  - fn has_attr(&self, attr: &str) -> bool {
  + pub(crate) fn attrs_has_attr(&self, attr: &str) -> bool {
  match attr {
  #(#has_attr_items),*,
  _ => false,
  @@ -149,7 +149,7 @@ fn expand_attrs_derive(data: Data, name: Ident) -> Result<proc_macro2::TokenStre
  let get_attr_items = expose_fields.iter().map(|f| f.get_attr_match_item());
  let get_attr = quote! {
  - fn get_attr<'v>(&self, attr: &str, heap: &'v starlark::values::Heap) -> Option<starlark::values::Value<'v>> {
  + pub(crate) fn attrs_get_attr<'v>(&self, attr: &str, heap: &'v starlark::values::Heap) -> Option<starlark::values::Value<'v>> {
  match attr {
  #(#get_attr_items),*,
  _ => None,
  @@ -159,7 +159,7 @@ fn expand_attrs_derive(data: Data, name: Ident) -> Result<proc_macro2::TokenStre
  let dir_names = expose_fields.iter().map(|f| f.ident.to_string());
  let dir_attr = quote! {
  - fn dir_attr(&self) -> Vec<String> {
  + pub(crate) fn attrs_dir_attr(&self) -> Vec<String> {
  vec![
  #(#dir_names.to_owned()),*
  ]
  @@ -196,13 +196,13 @@ pub fn starlark_attrs() -> TokenStream {
  // proxy all attr methods to the implementations generated by
  // derive(Attrs)
  fn has_attr(&self, attr: &str) -> bool {
  - Self::has_attr(self, attr)
  + self.attrs_has_attr(attr)
  }
  fn get_attr(&self, attr: &str, heap: &'v starlark::values::Heap) -> Option<starlark::values::Value<'v>> {
  - Self::get_attr(self, attr, heap)
  + self.attrs_get_attr(attr, heap)
  }
  fn dir_attr(&self) -> Vec<String> {
  - Self::dir_attr(self)
  + self.attrs_dir_attr()
  }
  };
  expanded.into()
  