code: def _at_each(self, calculator, rule, scope, block):
          
          varstring, _, valuestring = block.argument.partition(' in ')
          values = calculator.calculate(valuestring)
          if not values:
              return
  
          varlist = [
              normalize_var(calculator.do_glob_math(var.strip()))
              # TODO use list parsing here
              for var in varstring.split(",")
          ]
  
          # `@each $foo, in $bar` unpacks, but `@each $foo in $bar` does not!
          unpack = len(varlist) > 1
          if not varlist[-1]:
              varlist.pop()
  
          inner_rule = rule.copy()
          inner_rule.unparsed_contents = block.unparsed_contents
          if not self.should_scope_loop_in_rule(inner_rule):
              # DEVIATION: Allow not creating a new namespace
              inner_rule.namespace = rule.namespace
  
          for v in List.from_maybe(values):
              if unpack:
                  v = List.from_maybe(v)
                  for i, var in enumerate(varlist):
                      if i >= len(v):
                          value = Null()
                      else:
                          value = v[i]
                      inner_rule.namespace.set_variable(var, value)
              else:
                  inner_rule.namespace.set_variable(varlist[0], v)
              self.manage_children(inner_rule, scope)
docs: Implements @each