{"record":{"id":"aa2f020eb7233a20","repo":"nautechsystems/nautilus_trader","slug":"order-quantity-not-set","errorCode":null,"errorMessage":"Order quantity not set","messagePattern":"Order quantity not set","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/model/src/orders/builder.rs","lineNumber":186,"sourceCode":"\n    // ----------- OrderSide ----------\n    pub fn side(&mut self, side: OrderSide) -> &mut Self {\n        self.side = Some(side);\n        self\n    }\n\n    fn get_side(&self) -> OrderSide {\n        self.side.unwrap_or(OrderSide::Buy)\n    }\n\n    // ----------- Quantity ----------\n    pub fn quantity(&mut self, quantity: Quantity) -> &mut Self {\n        self.quantity = Some(quantity);\n        self\n    }\n\n    fn get_quantity(&self) -> Quantity {\n        self.quantity.expect(\"Order quantity not set\")\n    }\n\n    // ----------- Price ----------\n    pub fn price(&mut self, price: Price) -> &mut Self {\n        self.price = Some(price);\n        self\n    }\n\n    fn get_price(&self) -> Price {\n        self.price.expect(\"Price not set\")\n    }\n\n    // ----------- TriggerPrice ----------\n    pub fn trigger_price(&mut self, trigger_price: Price) -> &mut Self {\n        self.trigger_price = Some(trigger_price);\n        self\n    }\n","sourceCodeStart":168,"sourceCodeEnd":204,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/model/src/orders/builder.rs#L168-L204","documentation":"A builder-invariant panic via Option::expect: OrderBuilder::build was invoked without quantity() having been called, so the required Quantity field is None. It indicates programmer error — an incomplete order definition — not a recoverable runtime condition; callers must set quantity before build.","triggerScenarios":"Calling OrderTestBuilder::build() without chaining .quantity(Quantity) beforehand.","commonSituations":"Skipping the quantity for order types where it seems optional (e.g. market orders in some venues), or copy-pasted builder setups missing the line.","solutions":["Add .quantity(Quantity::from(...)) to the builder chain before build().","Use a shared test helper that always sets a default quantity.","Verify the quantity is a valid Quantity for the instrument's size precision."],"exampleFix":"// before\nlet order = OrderTestBuilder::new(OrderType::Market).instrument_id(id).build();\n// after\nlet order = OrderTestBuilder::new(OrderType::Market)\n    .instrument_id(id)\n    .quantity(Quantity::from(1))\n    .build();","handlingStrategy":"validation","validationCode":"assert!(quantity.is_some(), \"quantity must be set before build()\");\nbuilder.quantity(quantity.unwrap()).build();","typeGuard":null,"tryCatchPattern":"// validate before build; build panics on missing required fields\nassert!(quantity.is_some());","preventionTips":["Always chain .quantity(...) before build(); it is required for every order type.","Use a fixture helper with default quantity for tests.","Add a checklist comment of required builder fields in test scaffolding."],"tags":["rust","panic","builder","missing-field","testing"],"backgroundTag":"missing-required-argument","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}