В PHP почему mysqli_num_rows не возвращает целое число для запроса с 0 возвращенными строками?

Я думаю, что проблема может быть больше в сигнатуре compare_to_smth.

fn compare_to_smth<'a, T>(value: &'a T) // this implies a T: 'a bound
                       // because otherwise we would not be able to
                       // have a &'a T (references can't live longer
                       // than the thing they reference)

, но затем внутри функции, которую вы выполняете:

let smth_value: T = Read::read(mem).unwrap(); 
                                 // give me something of type T that
                                 // lives less than T

Я могу быть неправ, но я не думаю, что это зависит от того, как определяется Read и насколько сложна система типов в будущем, так как все, что вы пишете с правой стороны, не изменяет того факта, что вы ожидаете T на левой стороне (и T должен пережить 'a).

«Достаточно умный компилятор» мог бы видеть, что smth_value на самом деле не дольше 'a и что вы " это безопасно, но в целом это будет небезопасно. Я уверен, что использование небезопасной трансмутации в compare_to_smth полностью победит вашу цель, но для демонстрации это работает:

fn compare_to_smth<'a, T>(value: &'a T) -> bool
    where T: Read<'a> + PartialEq
{
    let mem: &[u8] = &[0x01, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37];
    let smth_value = <U8AndStr as Read>::read(mem).unwrap();
    let vl: &U8AndStr = unsafe{ std::mem::transmute(value) };

    smth_value == *vl
}
1
задан Marcin Orlowski 4 March 2019 в 00:50
поделиться

1 ответ

Я просто не могу понять, почему это возвращает NULL, а не 0.

Мы можем только догадываться, не видя вывода журнала; но, скорее всего, возвращаемое значение равно нулю, поскольку вместо этого возникла ошибка.

Необходимо убедиться, что ошибки обрабатываются при вызове функции, прежде чем пытаться использовать возвращаемое значение.

0
ответ дан bignose 4 March 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: