public static Optional<CuriTemplate> matchingCuriTemplateFor(final List<Link> curies, final String rel) {
        return curies
                .stream()
                .map(CuriTemplate::curiTemplateFor)
                .filter(t->t.isMatching(rel))
                .findAny();
    }
public static Optional < CuriTemplate > matchingCuriTemplateFor ( final List < Link > curies , final String rel ) { return curies . stream ( ) . map ( CuriTemplate :: curiTemplateFor ) . filter ( t -> t . isMatching ( rel ) ) . findAny ( ) ; }
Returns an optional CuriTemplate that is {@link #isMatching matching} the rel parameter, or empty if no matching CURI is found.

<p>
Example:
</p>
<pre><code>
List&lt;Link&gt; curies = asList(
Link.curi("x", "http://example.org/rels/{rel}"),
Link.curi("y", "http://example.com/link-relations/{rel}")
);
String rel = "y:example";
CuriTemplate template = CuriTemplate.matchingCuriTemplateFor(curies, rel);
</code></pre>
<p>
The returned UriTemplate is created from the second CURI, as only this is matching the curied rel parameter
{@code y:example}. Because of this, {@link #expandedRelFrom(String) template.expandedRelFrom(rel)} will
return {@code http://example.com/link-relations/example}
</p>
@param curies a List of curies Links
@param rel the link-relation type to check against the curies
@return optional CuriTemplate
@throws IllegalArgumentException if the {@code curies} parameter contains non-CURI links.
@since 2.0.0