You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: signal.rs
    path of file: ./repos/cxx-qt/crates/cxx-qt-gen/src/generator/rust/property
    
    the code of the file until where you have to start completion: // SPDX-FileCopyrightText: 2022 Klar√§lvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
// SPDX-FileContributor: Andrew Hayzen <andrew.hayzen@kdab.com>
//
// SPDX-License-Identifier: MIT OR Apache-2.0

use syn::ForeignItemFn;

use crate::{
    generator::naming::{property::QPropertyName, qobject::QObjectName},
    parser::signals::ParsedSignal,
};

pub fn generate(idents: &QPropertyName, qobject_idents: &QObjectName) -> ParsedSignal {
    // We build our signal in the generation phas
    
pub fn generate(idents: &QPropertyName, qobject_idents: &QObjectName) -> ParsedSignal {
    // We build our signal in the generation phase as we need to use the naming
    // structs to build the signal name
    let cpp_class_rust = &qobject_idents.cpp_class.rust;
    let notify_rust = &idents.notify.rust;
    let notify_cpp_str = &idents.notify.cpp.to_string();
    let method: ForeignItemFn = syn::parse_quote! {
        #[doc = "Notify for the Q_PROPERTY"]
        #[cxx_name = #notify_cpp_str]
        fn #notify_rust(self: Pin<&mut #cpp_class_rust>);
    };
    ParsedSignal::from_property_method(
        method,
        idents.notify.clone(),
        qobject_idents.cpp_class.rust.clone(),
    )
}