If you want to use an Arduino (or another board) to program an stm32, the key seems to be the CP2102 or the FTDI chip.
From Fabio's comment, I tried to program my STM32F103C8 fake Chinese clone with an Arduino nano(via Arduino Ide 1.8.5 and Roger Clark's board library) with the stm32duino's Arduino Core Boards support. However, it only worked twice through sheer luck.
The Arduino Decemilia in "Poor-man’s boot loader upload" has an FTDI chip as shown below. If you have a module with an FTDI chip or a CP2102 chip, it should most likely be able to program an STM32.

I tried it with an ESP32 NodeMCU: 38-pin version that I had lying around and it worked perfectly! (with Arduino IDE as well as on PlatformIO).
This is the forum link for using an ESP32 as an FTDI.
My setup:
Between ESP32 and STM32:
3.3V (ESP32) --> 3.3V (STM32)
GND (ESP32) --> GND (STM32)
TX (ESP32) --> A9 (STM32)
RX (ESP32) --> A10 (STM32)
Internal to the ESP32:
EN (ESP32) --> GND (ESP32)
optional config with Platform IO (platform.ini file):
[env:bluepill_f103c8]
platform = ststm32
board = bluepill_f103c8
framework = arduino
upload_protocol = serial
upload_port = COM3
monitor_speed = 115200

Turns out the ESP32 NodeMCU also has a CP2102 chip. Make sure you get the drivers from here

-Rohit