fn all_types_of_node(
        &self,
        node: ViewNodeId,
    ) -> Vec<(ViewNodeId, ast::Id, Option<view::graph_editor::Type>)> {
        let subexpressions = self.state.expressions_of_node(node);
        subexpressions
            .iter()
            .map(|id| {
                let a_type = self.expression_type(*id);
                self.state.update_from_controller().set_expression_type(*id, a_type.clone());
                (node, *id, a_type)
            })
            .collect()
    }
/// Extract all types for subexpressions in node expressions, update the state,
/// and return the events for graph editor FRP input setting all of those types.
///
/// The result includes the types not changed according to the state. That's because this
/// function is used after node expression change, and we need to reset all the types in view.
Extract all types for subexpressions in node expressions, update the state,
and return the events for graph editor FRP input setting all of those types.

The result includes the types not changed according to the state. That's because this
function is used after node expression change, and we need to reset all the types in view.
Extract all types for subexpressions in node expressions update the state and return the events for graph editor FRP input setting all of those types . The result includes the types not changed according to the state . That ' s because this function is used after node expression change and we need to reset all the types in view .
fn all_types_of_node(
        &self,
        node: ViewNodeId,
    ) -> Vec<(ViewNodeId, ast::Id, Option<view::graph_editor::Type>)> {
        let subexpressions = self.state.expressions_of_node(node);
        subexpressions
            .iter()
            .map(|id| {
                let a_type = self.expression_type(*id);
                self.state.update_from_controller().set_expression_type(*id, a_type.clone());
                (node, *id, a_type)
            })
            .collect()
    }
fn all_types_of_node ( & self , node : ViewNodeId , ) -> Vec < ( ViewNodeId , ast :: Id , Option < view :: graph_editor :: Type > ) > { let subexpressions = self . state . expressions_of_node ( node ) ; subexpressions . iter ( ) . map ( | id | { let a_type = self . expression_type ( * id ) ; self . state . update_from_controller ( ) . set_expression_type ( * id , a_type . clone ( ) ) ; ( node , * id , a_type ) } ) . collect ( ) }
Extract all types for subexpressions in node expressions, update the state,
and return the events for graph editor FRP input setting all of those types.
Extract all types for subexpressions in node expressions update the state and return the events for graph editor FRP input setting all of those types .
&self
node
ViewNodeId
&self
node
ViewNodeId