  In this paper we consider a mass- and energy--conserving Crank-Nicolson time
discretization for a general class of nonlinear Schr\"odinger equations. This
scheme, which enjoys popularity in the physics community due to its
conservation properties, was already subject to several analytical and
numerical studies. However, a proof of optimal $L^{\infty}(H^1)$-error
estimates is still open, both in the semi-discrete Hilbert space setting, as
well as in fully-discrete finite element settings. This paper aims at closing
this gap in the literature. We also suggest a fixed point iteration to solve
the arising nonlinear system of equations that makes the method easy to
implement and efficient. This is illustrated by numerical experiments.
