I want to declare a list with enumerate using the enumitem package, in which some of the items may have custom labels. However, the problem is that if a label is very long (i.e. longer than \labelwidth), the label overflows.
For instance, the following code:
\documentclass{article}
\begin{document}
\noindent
Text preceding the list.
\begin{enumerate}
\item Item 1.
\item[A very long label.] Item 2.
\item Item 3.
\end{enumerate}
Text following the list.
\end{document}
I would like there to always be a minimum distance between the left margin of the preceding text, and the left margin of each item label. In other words, I want the previous list to display like the following:
(The right margin should not be modified.)
This question is similar, but that question only concerns lists with default label numbering, not custom labels (the accepted answer does not work in this case).
I do not want to have to manually specify the longest label: it should be calculated automatically. (Note that, depending on the list in question, the longest label may be an automatically numbered label such as 1000., or a custom label.) Ideally, it would be possible to define a new environment replacing enumerate, or define a new option to pass to enumerate that has this modified behaviour.
(In a previous iteration of this question, I added my attempt at defining such an environment, but it did not work at all, and made the question much longer, so I have removed it.)

