```python
def link_find(line: str, opens: str, closes: str) -> list:
    """
    Return every piece of a line standing between an opening and a closing marker,
    in the order they appear and without the markers themselves. An opening marker
    never closed yields nothing, and the markers do not nest.

    :param line: The input line to search.
    :param opens: The opening marker.
    :param closes: The closing marker.
    :return: A list of strings, each representing a piece of the line between
             an opening and a closing marker.
    """
    if not opens or not closes:
        raise ValueError("Both opening and closing markers must be provided.")

    result = []
    depth = 0
    start = 0

    for i, char in enumerate(line):
        if char == opens:
            depth += 1
            if depth == 1:
                start = i
        elif char == closes:
            depth -= 1
            if depth == 0:
                result.append(line[start + 1:i])
                start = i + 1

    return result
```