Skip to content

Provide Tuple::as_ref and as_mut #421

Open
@danakj

Description

@danakj

Rust does not have this ability due to lack of variadics, though the tuple_list crate has something: https://docs.rs/tuple_list/latest/tuple_list/trait.AsTupleOfRefs.html

  constexpr auto as() const& {
    return [this]<size_t... Is>(std::index_sequence<Is...>) {
      return ::sus::Tuple<const std::remove_reference_t<Ts>&...>(
          tuple_.template at<Is>()...);
    }(std::make_index_sequence<sizeof...(Ts)>());
  }
  constexpr auto as_mut() & {
    return [this]<size_t... Is>(std::index_sequence<Is...>) {
      return ::sus::Tuple<Ts&...>(tuple_.template at_mut<Is>()...);
    }(std::make_index_sequence<sizeof...(Ts)>());
  }

These methods of Choice should be able to be implemented as just tuple_.as_ref() or tuple_.as_mut().

Metadata

Metadata

Assignees

No one assigned

    Labels

    designDesign of the library systems as a whole, such as concepts

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions