pm_hash_pattern_node_t

Type Alias pm_hash_pattern_node_t 

Source
pub type pm_hash_pattern_node_t = pm_hash_pattern_node;
Expand description

HashPatternNode

Represents a hash pattern in pattern matching.

 foo => { a: 1, b: 2 }
        ^^^^^^^^^^^^^^
 foo => { a: 1, b: 2, **c }
        ^^^^^^^^^^^^^^^^^^^
 foo => Bar[a: 1, b: 2]
        ^^^^^^^^^^^^^^^
 foo in { a: 1, b: 2 }
        ^^^^^^^^^^^^^^

Type: ::PM_HASH_PATTERN_NODE

@extends pm_node_t

Aliased Type§

#[repr(C)]
pub struct pm_hash_pattern_node_t { pub base: pm_node, pub constant: *mut pm_node, pub elements: pm_node_list, pub rest: *mut pm_node, pub opening_loc: pm_location_t, pub closing_loc: pm_location_t, }

Fields§

§base: pm_node

The embedded base node.

§constant: *mut pm_node

HashPatternNode#constant

Represents the optional constant preceding the Hash.

 foo => Bar[a: 1, b: 2]
      ^^^
 foo => Bar::Baz[a: 1, b: 2]
      ^^^^^^^^
§elements: pm_node_list

HashPatternNode#elements

Represents the explicit named hash keys and values.

 foo => { a: 1, b:, ** }
          ^^^^^^^^
§rest: *mut pm_node

HashPatternNode#rest

Represents the rest of the Hash keys and values. This can be named, unnamed, or explicitly forbidden via **nil, this last one results in a NoKeywordsParameterNode.

 foo => { a: 1, b:, **c }
                    ^^^
 foo => { a: 1, b:, ** }
                    ^^
 foo => { a: 1, b:, **nil }
                    ^^^^^
§opening_loc: pm_location_t

HashPatternNode#opening_loc

The location of the opening brace.

 foo => { a: 1 }
        ^
 foo => Bar[a: 1]
           ^
§closing_loc: pm_location_t

HashPatternNode#closing_loc

The location of the closing brace.

 foo => { a: 1 }
               ^
 foo => Bar[a: 1]
                ^