Skip to content

token_swapper to accept generic map-and-support for target description #1438

Open
@jakelishman

Description

@jakelishman

What is the expected enhancement?

Currently token_swapper requires a HashMap<G::NodeId, G::NodeId> to define the partial mapping that the token swapper is meant to effect. This is fine, but token_swapper takes ownership of the allocation and all that it's used for is to build up a separate HashMap (which in turn might not be terrible as a &[Option<G::NodeId>] where the index is the index into the internal Graph object's nodes, which can be arranged to be NodeCompactIndexable).

It could be convenient to be able to provide the "mapping" and "support" information in other ways - certainly in our use in Qiskit, being able to provide an immutable closure and an iterator would let us avoid heap allocations during making the call (and #1437 would let us avoid a heap allocation in the return value too).

It could potentially be implemented in a backwards compatible manner by making it generic over a trait that's automatically implemented for HashMap.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions