AFAIK there is no similar function in HAL. The common way to do it is:

 // index of first unread byte in the RX buffer
 static uint32_t rxpos = 0;
 // find end of data position in the RX buffer
 uint32_t pos = rxsize - puart->hdmarx->Instance->CNDTR;
 // pass accumulated bytes to listener
 if (pos != rxpos) {
 	if (pos > rxpos) {
 		// Process data directly by subtracting indexes
 	processData(rxbuffer + rxpos, pos - rxpos);
 } else {
 		// First process data to the end of the buffer
 	processData(rxbuffer + rxpos, rxsize - rxpos);
 		// Continue with beginning of the buffer
 	processData(rxbuffer, pos);
 }
 }
 // update starting index
 rxpos = (pos == rxsize)? 0 : pos;

You can call the above code from HAL_UART_RxHalfCpltCallback, HAL_UART_RxCpltCallback and, if you have code for processing either IDLE or RTO events, from corresponding handlers as well.

Note that current HAL implementation treats RTO as an error, eliminating the possibility to handle it properly. You'd have to bypass that if you want to get circular DMA transfers handled without added latency.