docs: def get_rule_handle(table='filter', chain=None, rule=None, family='ipv4'):
      '''
      Get the handle for a particular rule
  
      This function accepts a rule in a standard nftables command format,
          starting with the chain. Trying to force users to adapt to a new
          method of creating rules would be irritating at best, and we
          already have a parser that can handle it.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' nftables.get_rule_handle filter input \\
              rule='tcp dport 22 log accept'
  
          IPv6:
          salt '*' nftables.get_rule_handle filter input \\
              rule='tcp dport 22 log accept' \\
              family=ipv6
      '''
      ret = {'comment': '',
             'result': False}
  
      if not chain:
          ret['comment'] = 'Chain needs to be specified'
          return ret
  
      if not rule:
          ret['comment'] = 'Rule needs to be specified'
          return ret
  
      res = check_table(table, family=family)
      if not res['result']:
          return res
  
      res = check_chain(table, chain, family=family)
      if not res['result']:
          return res
  
      res = check(table, chain, rule, family=family)
      if not res['result']:
          return res
  
      nft_family = _NFTABLES_FAMILIES[family]
      cmd = '{0} --numeric --numeric --numeric --handle list chain {1} {2} {3}'.\
          format(_nftables_cmd(), nft_family, table, chain)
      out = __salt__['cmd.run'](cmd, python_shell=False)
      rules = re.split('\n+', out)
  
      pat = re.compile(r'{0} # handle (?P<handle>\d+)'.format(rule))
      for r in rules:
          match = pat.search(r)
          if match:
              return {'result': True, 'handle': match.group('handle')}
      return {'result': False,
              'comment': 'Could not find rule {0}'.format(rule)}