<!-- Generated with Stardoc: http://skydoc.bazel.build -->

<a name="#my_rule"></a>

## my_rule

<pre>
my_rule(<a href="#my_rule-name">name</a>, <a href="#my_rule-fifth">fifth</a>, <a href="#my_rule-first">first</a>, <a href="#my_rule-fourth">fourth</a>, <a href="#my_rule-second">second</a>, <a href="#my_rule-sixth">sixth</a>, <a href="#my_rule-third">third</a>)
</pre>

This rule does things.

### Attributes

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="my_rule-name">
      <td><code>name</code></td>
      <td>
        <a href="https://bazel.build/concepts/labels#target-names">Name</a>; required
        <p>
          A unique name for this target.
        </p>
      </td>
    </tr>
    <tr id="my_rule-fifth">
      <td><code>fifth</code></td>
      <td>
        <a href="https://bazel.build/concepts/labels">Label</a>; optional
        <p>
          The dependencies of this attribute must provide: LegacyProvider, ObjectProvider; or DefaultInfo, JavaInfo
        </p>
      </td>
    </tr>
    <tr id="my_rule-first">
      <td><code>first</code></td>
      <td>
        <a href="https://bazel.build/rules/lib/dict">Dictionary: Label -> String</a>; optional
        <p>
          this is the first attribute.
        </p>
        <p>
          The dependencies of this attribute must provide: MyProviderInfo, PyInfo, CcToolchainInfo, MyInfo
        </p>
      </td>
    </tr>
    <tr id="my_rule-fourth">
      <td><code>fourth</code></td>
      <td>
        <a href="https://bazel.build/concepts/labels">Label</a>; optional
        <p>
          The dependencies of this attribute must provide: ProtoInfo, DefaultInfo, JavaInfo, MyUndefinedInfo
        </p>
      </td>
    </tr>
    <tr id="my_rule-second">
      <td><code>second</code></td>
      <td>
        <a href="https://bazel.build/concepts/labels">List of labels</a>; optional
        <p>
          The dependencies of this attribute must provide: CcInfo; or OtherProviderInfo, DepProviderInfo
        </p>
      </td>
    </tr>
    <tr id="my_rule-sixth">
      <td><code>sixth</code></td>
      <td>
        <a href="https://bazel.build/concepts/labels">Label</a>; optional
        <p>
          The dependencies of this attribute must provide: LegacyProvider
        </p>
      </td>
    </tr>
    <tr id="my_rule-third">
      <td><code>third</code></td>
      <td>
        <a href="https://bazel.build/concepts/labels">Label</a>; optional
        <p>
          The dependencies of this attribute must provide: OtherProviderInfo
        </p>
      </td>
    </tr>
  </tbody>
</table>


<a name="#MyProviderInfo"></a>

## MyProviderInfo

<pre>
MyProviderInfo(<a href="#MyProviderInfo-foo">foo</a>, <a href="#MyProviderInfo-bar">bar</a>)
</pre>



### Fields

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="MyProviderInfo-foo">
      <td><code>foo</code></td>
      <td>
        <p>Something foo-related.</p>
      </td>
    </tr>
    <tr id="MyProviderInfo-bar">
      <td><code>bar</code></td>
      <td>
        <p>Something bar-related.</p>
      </td>
    </tr>
  </tbody>
</table>


<a name="#OtherProviderInfo"></a>

## OtherProviderInfo

<pre>
OtherProviderInfo()
</pre>





<a name="#my_rule_impl"></a>

## my_rule_impl

<pre>
my_rule_impl(<a href="#my_rule_impl-ctx">ctx</a>)
</pre>



### Parameters

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="my_rule_impl-ctx">
      <td><code>ctx</code></td>
      <td>
        required.
      </td>
    </tr>
  </tbody>
</table>


