c2rust-refactor 0.15.0

C2Rust refactoring tool implementation
from collections import namedtuple

Enum = namedtuple('Enum', ('name', 'variants', 'attrs'))
Struct = namedtuple('Struct', ('name', 'fields', 'is_tuple', 'attrs'))
Flag = namedtuple('Flag', ('name', 'attrs'))
Field = namedtuple('Field', ('name', 'attrs'))


def variants_paths(se):
    if isinstance(se, Enum):
        return [(v, '%s::%s' % (se.name, v.name)) for v in se.variants]
    elif isinstance(se, Struct):
        return [(se, se.name)]
    else:
        raise TypeError('expected Struct or Enum')

def has_field(s, name):
    if not isinstance(s, Struct):
        return False
    return any(f.name == name for f in s.fields)