2) use two io pins, + a cap (to gnd) and a resistor (to vcc / or one io pin).
That is a more generic set-up.
On mcus where weak pull-up is available, you can actually save that resistor and use only one capacitor and use one io pin:
1) enable the weak pull-up on the io pin, set up the pin as output and output a low on that pin.
2) set up the rest of your system - rising edge on int or pcint, timer, etc.
3) turn that pin as input - the weak pull-up will start to charge up the capacitor.
4) once the voltage across the capacitor triggers the int / pcint: in the isr, turn the pin to output - this discharges the capacitor; read the timer's lsb, reset it (optionally), and then turns the pin into an input - this starts to charge up the capacitor again.
On the avr, the coding is slightly different as it doesn't have separate bits to enable the weak pull-up but the general idea remains the same.
The speed depends on the strength of the weak pull-up and the capacitor used.