rustdt / rustdt Goto Github PK
View Code? Open in Web Editor NEWRustDT is an Eclipse based IDE for the Rust programming language:
Home Page: http://rustdt.github.io/
RustDT is an Eclipse based IDE for the Rust programming language:
Home Page: http://rustdt.github.io/
everything after a lifetime tick '
is highlighted until either the end of line or the next lifetime tick as if it were a character
I have installed 0.2.0.v201504232210
set these config:
Directory: E:\Rust
Rust 'src' Directory: E:\rustc-nightly
Executable: E:\racer.exe
When I type 'std' '::' or anything, no Content Assist displayed. But I can use F3 to jump to the code declare.
When build the project, eclipse often blocked at Building Workspace: (0%) (Build all... Invoking 'Rust builder' on '/Project'.),any other operation can't contiune include exit eclipse(I have to kill the eclipse executable)
Edit:
Content Assist can now displayed with 'Alt + /'
May I suggest RustDT add function to display Content Assist when click any key?
to run cargo test
you need to add an external tool and give it the exact path to cargo.exe
. It would be very comfortable to have a Rust Test
target that can be created like an Rust Application
target.
I am using RustDT 0.2.0.
From my error log:
!SESSION 2015-05-29 12:10:19.175 -----------------------------------------------
eclipse.buildId=4.4.2.Z20150513-1759
java.version=1.8.0_45
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE
Command-line arguments: -os linux -ws gtk -arch x86_64
!ENTRY com.github.rustdt.ide.core 4 0 2015-05-29 12:45:55.041
!MESSAGE Unknown line format: - Could not match expr node type: ExprMac(Spanned { node: MacInvocTT(Path { span: Span { lo: BytePos(23), hi: BytePos(26), expn_id: ExpnId(4294967295) }, global: false, segments: [PathSegment { identifier: try#0, parameters: AngleBracketedParameters(AngleBracketedParameterData { lifetimes: [], types: [], bindings: [] }) }] }, [TtToken(Span { lo: BytePos(28), hi: BytePos(35), expn_id: ExpnId(4294967295) }, Ident(Command#0, ModName)), TtToken(Span { lo: BytePos(35), hi: BytePos(37), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(37), hi: BytePos(40), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(40), hi: BytePos(53), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(40), hi: BytePos(41), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(41), hi: BytePos(52), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(77)), None))], close_span: Span { lo: BytePos(52), hi: BytePos(53), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(70), hi: BytePos(71), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(71), hi: BytePos(76), expn_id: ExpnId(4294967295) }, Ident(stdin#0, Plain)), TtDelimited(Span { lo: BytePos(76), hi: BytePos(92), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(76), hi: BytePos(77), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(77), hi: BytePos(82), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(82), hi: BytePos(84), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(84), hi: BytePos(89), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(89), hi: BytePos(91), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(89), hi: BytePos(90), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(90), hi: BytePos(91), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(91), hi: BytePos(92), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(106), hi: BytePos(107), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(107), hi: BytePos(113), expn_id: ExpnId(4294967295) }, Ident(stdout#0, Plain)), TtDelimited(Span { lo: BytePos(113), hi: BytePos(129), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(113), hi: BytePos(114), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(114), hi: BytePos(119), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(119), hi: BytePos(121), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(121), hi: BytePos(126), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(126), hi: BytePos(128), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(126), hi: BytePos(127), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(127), hi: BytePos(128), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(128), hi: BytePos(129), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(143), hi: BytePos(144), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(144), hi: BytePos(150), expn_id: ExpnId(4294967295) }, Ident(stderr#0, Plain)), TtDelimited(Span { lo: BytePos(150), hi: BytePos(166), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(150), hi: BytePos(151), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(151), hi: BytePos(156), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(156), hi: BytePos(158), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(158), hi: BytePos(163), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(163), hi: BytePos(165), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(163), hi: BytePos(164), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(164), hi: BytePos(165), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(165), hi: BytePos(166), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(180), hi: BytePos(181), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(181), hi: BytePos(186), expn_id: ExpnId(4294967295) }, Ident(spawn#0, Plain)), TtDelimited(Span { lo: BytePos(186), hi: BytePos(188), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(186), hi: BytePos(187), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(187), hi: BytePos(188), expn_id: ExpnId(4294967295) } })], 0), span: Span { lo: BytePos(23), hi: BytePos(189), expn_id: ExpnId(4294967295) } })
!ENTRY com.github.rustdt.ide.core 4 0 2015-05-29 12:46:57.356
!MESSAGE Unknown line format: - Could not match expr node type: ExprMac(Spanned { node: MacInvocTT(Path { span: Span { lo: BytePos(23), hi: BytePos(26), expn_id: ExpnId(4294967295) }, global: false, segments: [PathSegment { identifier: try#0, parameters: AngleBracketedParameters(AngleBracketedParameterData { lifetimes: [], types: [], bindings: [] }) }] }, [TtToken(Span { lo: BytePos(28), hi: BytePos(35), expn_id: ExpnId(4294967295) }, Ident(Command#0, ModName)), TtToken(Span { lo: BytePos(35), hi: BytePos(37), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(37), hi: BytePos(40), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(40), hi: BytePos(53), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(40), hi: BytePos(41), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(41), hi: BytePos(52), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(78)), None))], close_span: Span { lo: BytePos(52), hi: BytePos(53), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(70), hi: BytePos(71), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(71), hi: BytePos(76), expn_id: ExpnId(4294967295) }, Ident(stdin#0, Plain)), TtDelimited(Span { lo: BytePos(76), hi: BytePos(92), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(76), hi: BytePos(77), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(77), hi: BytePos(82), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(82), hi: BytePos(84), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(84), hi: BytePos(89), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(89), hi: BytePos(91), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(89), hi: BytePos(90), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(90), hi: BytePos(91), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(91), hi: BytePos(92), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(106), hi: BytePos(107), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(107), hi: BytePos(113), expn_id: ExpnId(4294967295) }, Ident(stdout#0, Plain)), TtDelimited(Span { lo: BytePos(113), hi: BytePos(129), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(113), hi: BytePos(114), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(114), hi: BytePos(119), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(119), hi: BytePos(121), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(121), hi: BytePos(126), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(126), hi: BytePos(128), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(126), hi: BytePos(127), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(127), hi: BytePos(128), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(128), hi: BytePos(129), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(143), hi: BytePos(144), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(144), hi: BytePos(150), expn_id: ExpnId(4294967295) }, Ident(stderr#0, Plain)), TtDelimited(Span { lo: BytePos(150), hi: BytePos(166), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(150), hi: BytePos(151), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(151), hi: BytePos(156), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(156), hi: BytePos(158), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(158), hi: BytePos(163), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(163), hi: BytePos(165), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(163), hi: BytePos(164), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(164), hi: BytePos(165), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(165), hi: BytePos(166), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(180), hi: BytePos(181), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(181), hi: BytePos(186), expn_id: ExpnId(4294967295) }, Ident(spawn#0, Plain)), TtDelimited(Span { lo: BytePos(186), hi: BytePos(188), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(186), hi: BytePos(187), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(187), hi: BytePos(188), expn_id: ExpnId(4294967295) } })], 0), span: Span { lo: BytePos(23), hi: BytePos(189), expn_id: ExpnId(4294967295) } })
!ENTRY com.github.rustdt.ide.core 4 0 2015-05-29 12:47:02.700
!MESSAGE Unknown line format: - Could not match expr node type: ExprMac(Spanned { node: MacInvocTT(Path { span: Span { lo: BytePos(23), hi: BytePos(26), expn_id: ExpnId(4294967295) }, global: false, segments: [PathSegment { identifier: try#0, parameters: AngleBracketedParameters(AngleBracketedParameterData { lifetimes: [], types: [], bindings: [] }) }] }, [TtToken(Span { lo: BytePos(28), hi: BytePos(35), expn_id: ExpnId(4294967295) }, Ident(Command#0, ModName)), TtToken(Span { lo: BytePos(35), hi: BytePos(37), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(37), hi: BytePos(40), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(40), hi: BytePos(53), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(40), hi: BytePos(41), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(41), hi: BytePos(52), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(78)), None))], close_span: Span { lo: BytePos(52), hi: BytePos(53), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(70), hi: BytePos(71), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(71), hi: BytePos(76), expn_id: ExpnId(4294967295) }, Ident(stdin#0, Plain)), TtDelimited(Span { lo: BytePos(76), hi: BytePos(92), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(76), hi: BytePos(77), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(77), hi: BytePos(82), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(82), hi: BytePos(84), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(84), hi: BytePos(89), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(89), hi: BytePos(91), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(89), hi: BytePos(90), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(90), hi: BytePos(91), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(91), hi: BytePos(92), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(106), hi: BytePos(107), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(107), hi: BytePos(113), expn_id: ExpnId(4294967295) }, Ident(stdout#0, Plain)), TtDelimited(Span { lo: BytePos(113), hi: BytePos(129), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(113), hi: BytePos(114), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(114), hi: BytePos(119), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(119), hi: BytePos(121), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(121), hi: BytePos(126), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(126), hi: BytePos(128), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(126), hi: BytePos(127), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(127), hi: BytePos(128), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(128), hi: BytePos(129), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(143), hi: BytePos(144), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(144), hi: BytePos(150), expn_id: ExpnId(4294967295) }, Ident(stderr#0, Plain)), TtDelimited(Span { lo: BytePos(150), hi: BytePos(166), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(150), hi: BytePos(151), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(151), hi: BytePos(156), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(156), hi: BytePos(158), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(158), hi: BytePos(163), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(163), hi: BytePos(165), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(163), hi: BytePos(164), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(164), hi: BytePos(165), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(165), hi: BytePos(166), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(180), hi: BytePos(181), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(181), hi: BytePos(186), expn_id: ExpnId(4294967295) }, Ident(spawn#0, Plain)), TtDelimited(Span { lo: BytePos(186), hi: BytePos(188), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(186), hi: BytePos(187), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(187), hi: BytePos(188), expn_id: ExpnId(4294967295) } })], 0), span: Span { lo: BytePos(23), hi: BytePos(189), expn_id: ExpnId(4294967295) } })
!ENTRY com.github.rustdt.ide.core 4 0 2015-05-29 12:47:06.321
!MESSAGE Unknown line format: - Could not match expr node type: ExprMac(Spanned { node: MacInvocTT(Path { span: Span { lo: BytePos(23), hi: BytePos(26), expn_id: ExpnId(4294967295) }, global: false, segments: [PathSegment { identifier: try#0, parameters: AngleBracketedParameters(AngleBracketedParameterData { lifetimes: [], types: [], bindings: [] }) }] }, [TtToken(Span { lo: BytePos(28), hi: BytePos(35), expn_id: ExpnId(4294967295) }, Ident(Command#0, ModName)), TtToken(Span { lo: BytePos(35), hi: BytePos(37), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(37), hi: BytePos(40), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(40), hi: BytePos(53), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(40), hi: BytePos(41), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(41), hi: BytePos(52), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(78)), None))], close_span: Span { lo: BytePos(52), hi: BytePos(53), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(70), hi: BytePos(71), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(71), hi: BytePos(76), expn_id: ExpnId(4294967295) }, Ident(stdin#0, Plain)), TtDelimited(Span { lo: BytePos(76), hi: BytePos(92), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(76), hi: BytePos(77), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(77), hi: BytePos(82), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(82), hi: BytePos(84), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(84), hi: BytePos(89), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(89), hi: BytePos(91), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(89), hi: BytePos(90), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(90), hi: BytePos(91), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(91), hi: BytePos(92), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(106), hi: BytePos(107), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(107), hi: BytePos(113), expn_id: ExpnId(4294967295) }, Ident(stdout#0, Plain)), TtDelimited(Span { lo: BytePos(113), hi: BytePos(129), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(113), hi: BytePos(114), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(114), hi: BytePos(119), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(119), hi: BytePos(121), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(121), hi: BytePos(126), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(126), hi: BytePos(128), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(126), hi: BytePos(127), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(127), hi: BytePos(128), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(128), hi: BytePos(129), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(143), hi: BytePos(144), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(144), hi: BytePos(150), expn_id: ExpnId(4294967295) }, Ident(stderr#0, Plain)), TtDelimited(Span { lo: BytePos(150), hi: BytePos(166), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(150), hi: BytePos(151), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(151), hi: BytePos(156), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(156), hi: BytePos(158), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(158), hi: BytePos(163), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(163), hi: BytePos(165), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(163), hi: BytePos(164), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(164), hi: BytePos(165), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(165), hi: BytePos(166), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(180), hi: BytePos(181), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(181), hi: BytePos(186), expn_id: ExpnId(4294967295) }, Ident(spawn#0, Plain)), TtDelimited(Span { lo: BytePos(186), hi: BytePos(188), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(186), hi: BytePos(187), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(187), hi: BytePos(188), expn_id: ExpnId(4294967295) } })], 0), span: Span { lo: BytePos(23), hi: BytePos(189), expn_id: ExpnId(4294967295) } })
!ENTRY com.github.rustdt.ide.core 4 0 2015-05-29 12:47:14.892
!MESSAGE Unknown line format: - Could not match expr node type: ExprMac(Spanned { node: MacInvocTT(Path { span: Span { lo: BytePos(23), hi: BytePos(26), expn_id: ExpnId(4294967295) }, global: false, segments: [PathSegment { identifier: try#0, parameters: AngleBracketedParameters(AngleBracketedParameterData { lifetimes: [], types: [], bindings: [] }) }] }, [TtToken(Span { lo: BytePos(28), hi: BytePos(35), expn_id: ExpnId(4294967295) }, Ident(Command#0, ModName)), TtToken(Span { lo: BytePos(35), hi: BytePos(37), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(37), hi: BytePos(40), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(40), hi: BytePos(53), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(40), hi: BytePos(41), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(41), hi: BytePos(52), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(78)), None))], close_span: Span { lo: BytePos(52), hi: BytePos(53), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(70), hi: BytePos(71), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(71), hi: BytePos(76), expn_id: ExpnId(4294967295) }, Ident(stdin#0, Plain)), TtDelimited(Span { lo: BytePos(76), hi: BytePos(92), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(76), hi: BytePos(77), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(77), hi: BytePos(82), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(82), hi: BytePos(84), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(84), hi: BytePos(89), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(89), hi: BytePos(91), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(89), hi: BytePos(90), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(90), hi: BytePos(91), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(91), hi: BytePos(92), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(106), hi: BytePos(107), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(107), hi: BytePos(113), expn_id: ExpnId(4294967295) }, Ident(stdout#0, Plain)), TtDelimited(Span { lo: BytePos(113), hi: BytePos(129), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(113), hi: BytePos(114), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(114), hi: BytePos(119), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(119), hi: BytePos(121), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(121), hi: BytePos(126), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(126), hi: BytePos(128), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(126), hi: BytePos(127), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(127), hi: BytePos(128), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(128), hi: BytePos(129), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(143), hi: BytePos(144), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(144), hi: BytePos(150), expn_id: ExpnId(4294967295) }, Ident(stderr#0, Plain)), TtDelimited(Span { lo: BytePos(150), hi: BytePos(166), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(150), hi: BytePos(151), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(151), hi: BytePos(156), expn_id: ExpnId(4294967295) }, Ident(Stdio#0, ModName)), TtToken(Span { lo: BytePos(156), hi: BytePos(158), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(158), hi: BytePos(163), expn_id: ExpnId(4294967295) }, Ident(piped#0, Plain)), TtDelimited(Span { lo: BytePos(163), hi: BytePos(165), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(163), hi: BytePos(164), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(164), hi: BytePos(165), expn_id: ExpnId(4294967295) } })], close_span: Span { lo: BytePos(165), hi: BytePos(166), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(180), hi: BytePos(181), expn_id: ExpnId(4294967295) }, Dot), TtToken(Span { lo: BytePos(181), hi: BytePos(186), expn_id: ExpnId(4294967295) }, Ident(spawn#0, Plain)), TtDelimited(Span { lo: BytePos(186), hi: BytePos(188), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(186), hi: BytePos(187), expn_id: ExpnId(4294967295) }, tts: [], close_span: Span { lo: BytePos(187), hi: BytePos(188), expn_id: ExpnId(4294967295) } })], 0), span: Span { lo: BytePos(23), hi: BytePos(189), expn_id: ExpnId(4294967295) } })
I can reproduce this by creating a std::process::Child object and trying to auto-complete a function on it.
The installation section of documentation is confusing (that ate 30 mins of my time, cause I had to google), because
This is something that works in JDT and CDT, and as Rust uses local type inference, it's a massively useful feature.
If you don't know how it works, let's suppose we have a piece of code:
fn main() {
let mut x = some_func(..);
let y : u32 = ..;
...
let z = x.my_fun(Some(y), true); // โ cursor is on this line, the method my_fun doesn't exist
}
Hitting Ctrl-1 (Quick Fix) would then contain a "Create Method" item, which would infer the argument types (and whether it's a self-bound or free method) and create a method stub, like:
fn my_fun(&mut self, y: Option<u32>, b: bool) -> ! {
unimplemented(); // TODO
}
Note I used a "!
" for a return type that cannot be inferred, as we have no type information on z
in main()
. Also note that I have copied the mut
from x
to self
, because we can have a mutable self โ we may want to make this configurable; I can foresee people wanting to default to immutable borrow here.
One complication arise from the fact that Rust has traits: From the type, it may not be obvious where to put the method: in an inherent impl
or in any implemented trait in scope. It may be best to let the user choose.
Finally, it would be massively useful to make some type replacements, e.g. replace Vec
s with slices, many concrete types with Into<_>
types, etc. (though this could also be another quick fix).
Currently the option is enabled by default for C's main
, but stopping here is not of much use for Rust programs
In the Readme, under the heading Setting up the development environment, it explains Setup the target platform: Open the target platform file: releng/target-platform/IDE.target and set it as your target platform.
I do not understand how to do this. How do you "set it as your target platform" after you open the IDE.target file? Is this an option in the Eclipse Preferences menu somewhere?
I'm following the instructions to set up and use RustDT. I successfully added RustDT to a clean Eclipse installation.
I just installed Rust, I don't know where it's actually located on my system. In the Rust Preferences, I set /usr/local
as a Rust Installation Directory.
I created a project and a run configuration.
The console indicates correctly the result of the build. However, when I hit 'Run', I get this error popup indicating:
Failed to create a child process.
Cannot run program "<...>/hello-world/src/main.rs" (in directory "<...>/hello-world"): error=13, Permission denied
I hope you can have a look at it. Please let me know if you need additional information
Installation details:
Here is the stacktrace appearing in the error logs
!ENTRY com.github.rustdt.ide.core 4 101 2015-03-28 11:24:15.178
!MESSAGE Failed to create a child process.
!STACK 0
java.io.IOException: Cannot run program "<...>/hello-world/src/main.rs" (in directory "<...>/hello-world"): error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
at melnorme.lang.ide.launching.EclipseProcessLauncher.newSystemProcess(EclipseProcessLauncher.java:94)
at melnorme.lang.ide.launching.EclipseProcessLauncher.launchProcess(EclipseProcessLauncher.java:79)
at melnorme.lang.ide.launching.AbstractLangLaunchConfigurationDelegate.launchProcess(AbstractLangLaunchConfigurationDelegate.java:264)
at melnorme.lang.ide.launching.AbstractLangLaunchConfigurationDelegate.launch(AbstractLangLaunchConfigurationDelegate.java:161)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:885)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:739)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1039)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1256)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:185)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
... 9 more
The preference search does not seem to work for rustdt. If I search for "tab" the "tab policy" in Rust->Editor->Typing does not show up.
Is somebody else experiencing that?
No ideas, how to do this, but if you can show me how to manage this i can try to add this kind of autocompletion. For such code as
#[allow(dead_code)]
for example.
If the project is in a path that contains a space, calling racer fails. The path to the file to be completed should be quoted.
Currently RustDT 0.2.0 is unable to parse rustc error messages with multiple lines of output for one single line of code. Example:
use std::option::Option;
fn main() {
let a : u32 = Option::Some(4);
}
rustc output:
------- Building Rust project: test -------
>> Running: /usr/local/bin/cargo build
Compiling hello_world v0.0.1 (file:///path/to/project/projectname/src/test)
src/main.rs:4:19: 4:34 error: mismatched types:
expected `u32`,
found `core::option::Option<_>`
(expected u32,
found enum `core::option::Option`) [E0308]
src/main.rs:4 let a : u32 = Option::Some(4);
^~~~~~~~~~~~~~~
src/main.rs:4:19: 4:34 help: run `rustc --explain E0308` to see a detailed explanation
error: aborting due to previous error
Could not compile `hello_world`.
To learn more, run the command again with --verbose.
^^^ Terminated, exit code: 101 ^^^
************ Build terminated. ************
but it will only display mismatched types:
in the tooltip over line 4:19: 4:34.
The Ctrl+Shift+R
shortcut in eclipse allows you to find files. However, with Rust, a lot of files are named mod.rs
. I'm not sure whether this is possible, but it would be very useful if these were differentiated in some way. E.g. if a file is named mod1/mod.rs
, that typing mod1
would also match that file.
With the latest version, Racer is automatically run by default. When Racer returns an error, a message dialog pops up. When this does happen, it tends to happen a lot. Beyond that, even though there probably is an issue with Racer (in my case it's telling me MATCHSTR is empty - waddup?
), it mostly just gets in the way of my development.
I guess I think it would be a good idea to simply suppress the message box. If it is necessary to communicate a Racer error to the developer, maybe a better idea is to put focus on the Racer Console. That way you see the problem instead of just clicking away an irritating message box.
I want to deploy eclipse for rust silently. Please update doc with command line for this.
Its often pretty useful to see what the type of an inferred variable or expression is, particularly when reading someone else's code. It would be nice if RustDT could show the types to the user, e.g. when the user mouses over a variable/expression or clicks on it and selects F2.
File: rust/src/libcore/fmt/mod.rs
#[rustc_on_unimplemented = "`{Self}` cannot be formatted using `:?`; if it is \
defined in your crate, add `#[derive(Debug)]` or \
manually implement it"]
This code make everything below green.
Install:
Windows 7 x64
Eclipse 4.5 x64
Cygwin x64 with gdb 7.8
Add cygwin bin folder to PATH
Steps
// This code is editable and runnable!
fn main() {
// A simple integer calculator:
// `+` or `-` means add or subtract by 1
// `*` or `/` means multiply or divide by 2
let program = "+ + * - /";
let mut accumulator = 0;
for token in program.chars() {
match token {
'+' => accumulator += 1,
'-' => accumulator -= 1,
'*' => accumulator *= 2,
'/' => accumulator /= 2,
_ => { /* ignore everything else */ }
}
}
println!("The program \"{}\" calculates the value {}",
program, accumulator);
}
Actual result:
In Console view:
GNU gdb (GDB) 7.8
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-cygwin".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word".
No source file named C:\Users\okushnir\Desktop\workspace_tst\rust1\src\main.rs.
[New Thread 1152.0x3fb8]
Temporary breakpoint 2, 0x0000000000401dc8 in main ()
In Debug view:
An internal error has occurred.
org.eclipse.cdt.dsf.gdb.internal.ui.actions.GdbRestartCommand.>(Lorg/eclipse/cdt/dsf/service/DsfSession;Lorg/eclipse/cdt/dsf/gdb/launching/GdbLaunch;)V
In GDB traces console view:
467,885 2-gdb-version
467,887 ~"GNU gdb (GDB) 7.8\n"
467,887 ~"Copyright (C) 2014 Free Software Foundation, Inc.\n"
467,887 ~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is fre\
e software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitt\
ed by law. Type \"show copying\"\nand \"show warranty\" for details.\n"
467,887 ~"This GDB was configured as \"x86_64-pc-cygwin\".\nType \"show configuration\" for configur\
ation details."
467,887 ~"\nFor bug reporting instructions, please see:\n"
467,888 ~"<http://www.gnu.org/software/gdb/bugs/>.\n"
467,888 ~"Find the GDB manual and other documentation resources online at:\n<http://www.gnu.org/soft\
ware/gdb/documentation/>.\n"
467,888 ~"For help, type \"help\".\n"
467,888 ~"Type \"apropos word\" to search for commands related to \"word\".\n"
467,888 2^done
467,888 (gdb)
467,889 3-environment-cd C:/Users/okushnir/Desktop/workspace_tst/rust1
467,890 3^done
467,890 (gdb)
467,890 4-gdb-set breakpoint pending on
467,891 4^done
467,891 (gdb)
467,891 5-gdb-set detach-on-fork on
467,892 5^done
467,892 (gdb)
467,892 6-enable-pretty-printing
467,893 6^done
467,893 (gdb)
467,893 7-gdb-set python print-stack none
467,894 7^done
467,894 (gdb)
467,894 8-gdb-set print object on
467,895 8^done
467,895 (gdb)
467,895 9-gdb-set print sevenbit-strings on
467,896 9^done
467,896 (gdb)
467,896 10-gdb-set host-charset UTF-8
467,897 10^done
467,897 (gdb)
467,897 11-gdb-set target-charset WINDOWS-1251
467,898 11^done
467,898 (gdb)
467,898 12-gdb-set target-wide-charset UTF-16
467,899 12^done
467,899 (gdb)
467,899 13-gdb-set dprintf-style call
467,900 13^done
467,900 (gdb)
467,900 14source .gdbinit
467,901 &"source .gdbinit\n"
467,901 &".gdbinit: No such file or directory.\n"
467,901 14^error,msg=".gdbinit: No such file or directory."
467,901 (gdb)
467,902 15-gdb-set target-async off
467,903 15^done
467,903 (gdb)
467,903 16-gdb-set auto-solib-add on
467,904 16^done
467,904 (gdb)
467,904 17-file-exec-and-symbols --thread-group i1 C:/Users/okushnir/Desktop/workspace_tst/rust1/tar\
get/debug/calc.exe
467,952 17^done
467,952 (gdb)
467,953 18-gdb-show --thread-group i1 language
467,954 18^done,value="auto"
467,954 (gdb)
467,954 19-gdb-set --thread-group i1 language c
467,955 19^done
467,955 (gdb)
467,955 20-interpreter-exec --thread-group i1 console "p/x (char)-1"
467,956 ~"$1 = 0xff\n"
467,957 20^done
467,957 (gdb)
467,957 21-data-evaluate-expression --thread-group i1 "sizeof (void*)"
467,958 21^done,value="8"
467,958 (gdb)
467,958 22-gdb-set --thread-group i1 language auto
467,959 22^done
467,959 (gdb)
467,959 23-interpreter-exec --thread-group i1 console "show endian"
467,960 ~"The target endianness is set automatically (currently little endian)\n"
467,960 23^done
467,960 (gdb)
467,961 24-list-thread-groups
467,962 24^done,groups=[{id="i1",type="process",executable="/cygdrive/c/Users/okushnir/Desktop/works\
pace_tst/rust1/target/debug/calc.exe"}]
467,962 (gdb)
467,962 25-break-insert -f C:\\Users\\okushnir\\Desktop\\workspace_tst\\rust1\\src\\main.rs:7
467,965 &"No source file named C:\\\\Users\\\\okushnir\\\\Desktop\\\\workspace_tst\\\\rust1\\\\src\\\
\\main.rs.\n"
467,965 25^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending=\
"C:\\\\Users\\\\okushnir\\\\Desktop\\\\workspace_tst\\\\rust1\\\\src\\\\main.rs:7",times="0",origina\
l-location="C:\\\\Users\\\\okushnir\\\\Desktop\\\\workspace_tst\\\\rust1\\\\src\\\\main.rs:7"}
467,965 (gdb)
467,966 26-break-insert -t -f main
467,967 26^done,bkpt={number="2",type="breakpoint",disp="del",enabled="y",addr="0x0000000000401dc8",\
at="<main+8>",thread-groups=["i1"],times="0",original-location="main"}
467,967 (gdb)
467,970 27-exec-run --thread-group i1
467,975 =thread-group-started,id="i1",pid="2244"
467,976 28-list-thread-groups --available
467,976 =thread-created,id="1",group-id="i1"
467,976 ~"[New Thread 2244.0x5394]\n"
467,976 27^running
467,976 *running,thread-id="all"
467,976 (gdb)
467,996 =library-loaded,id="/cygdrive/c/Windows/SYSTEM32/ntdll.dll",target-name="/cygdrive/c/Windows\
/SYSTEM32/ntdll.dll",host-name="/cygdrive/c/Windows/SYSTEM32/ntdll.dll",symbols-loaded="0",thread-gr\
oup="i1"
467,997 =library-loaded,id="/cygdrive/c/Windows/system32/kernel32.dll",target-name="/cygdrive/c/Wind\
ows/system32/kernel32.dll",host-name="/cygdrive/c/Windows/system32/kernel32.dll",symbols-loaded="0",\
thread-group="i1"
467,998 =library-loaded,id="/cygdrive/c/Windows/system32/KERNELBASE.dll",target-name="/cygdrive/c/Wi\
ndows/system32/KERNELBASE.dll",host-name="/cygdrive/c/Windows/system32/KERNELBASE.dll",symbols-loade\
d="0",thread-group="i1"
467,998 =library-loaded,id="/cygdrive/c/Windows/system32/ADVAPI32.dll",target-name="/cygdrive/c/Wind\
ows/system32/ADVAPI32.dll",host-name="/cygdrive/c/Windows/system32/ADVAPI32.dll",symbols-loaded="0",\
thread-group="i1"
467,998 =library-loaded,id="/cygdrive/c/Windows/system32/msvcrt.dll",target-name="/cygdrive/c/Window\
s/system32/msvcrt.dll",host-name="/cygdrive/c/Windows/system32/msvcrt.dll",symbols-loaded="0",thread\
-group="i1"
467,998 =library-loaded,id="/cygdrive/c/Windows/SYSTEM32/sechost.dll",target-name="/cygdrive/c/Windo\
ws/SYSTEM32/sechost.dll",host-name="/cygdrive/c/Windows/SYSTEM32/sechost.dll",symbols-loaded="0",thr\
ead-group="i1"
467,999 =library-loaded,id="/cygdrive/c/Windows/system32/RPCRT4.dll",target-name="/cygdrive/c/Window\
s/system32/RPCRT4.dll",host-name="/cygdrive/c/Windows/system32/RPCRT4.dll",symbols-loaded="0",thread\
-group="i1"
467,999 =library-loaded,id="/cygdrive/c/Windows/system32/SHELL32.dll",target-name="/cygdrive/c/Windo\
ws/system32/SHELL32.dll",host-name="/cygdrive/c/Windows/system32/SHELL32.dll",symbols-loaded="0",thr\
ead-group="i1"
467,999 =library-loaded,id="/cygdrive/c/Windows/system32/SHLWAPI.dll",target-name="/cygdrive/c/Windo\
ws/system32/SHLWAPI.dll",host-name="/cygdrive/c/Windows/system32/SHLWAPI.dll",symbols-loaded="0",thr\
ead-group="i1"
468,000 =library-loaded,id="/cygdrive/c/Windows/system32/GDI32.dll",target-name="/cygdrive/c/Windows\
/system32/GDI32.dll",host-name="/cygdrive/c/Windows/system32/GDI32.dll",symbols-loaded="0",thread-gr\
oup="i1"
468,000 =library-loaded,id="/cygdrive/c/Windows/system32/USER32.dll",target-name="/cygdrive/c/Window\
s/system32/USER32.dll",host-name="/cygdrive/c/Windows/system32/USER32.dll",symbols-loaded="0",thread\
-group="i1"
468,001 =library-loaded,id="/cygdrive/c/Windows/system32/LPK.dll",target-name="/cygdrive/c/Windows/s\
ystem32/LPK.dll",host-name="/cygdrive/c/Windows/system32/LPK.dll",symbols-loaded="0",thread-group="i\
1"
468,001 =library-loaded,id="/cygdrive/c/Windows/system32/USP10.dll",target-name="/cygdrive/c/Windows\
/system32/USP10.dll",host-name="/cygdrive/c/Windows/system32/USP10.dll",symbols-loaded="0",thread-gr\
oup="i1"
468,002 =library-loaded,id="/cygdrive/c/Windows/system32/USERENV.dll",target-name="/cygdrive/c/Windo\
ws/system32/USERENV.dll",host-name="/cygdrive/c/Windows/system32/USERENV.dll",symbols-loaded="0",thr\
ead-group="i1"
468,002 =library-loaded,id="/cygdrive/c/Windows/system32/profapi.dll",target-name="/cygdrive/c/Windo\
ws/system32/profapi.dll",host-name="/cygdrive/c/Windows/system32/profapi.dll",symbols-loaded="0",thr\
ead-group="i1"
468,002 =library-loaded,id="/cygdrive/c/Windows/system32/WS2_32.dll",target-name="/cygdrive/c/Window\
s/system32/WS2_32.dll",host-name="/cygdrive/c/Windows/system32/WS2_32.dll",symbols-loaded="0",thread\
-group="i1"
468,003 =library-loaded,id="/cygdrive/c/Windows/system32/NSI.dll",target-name="/cygdrive/c/Windows/s\
ystem32/NSI.dll",host-name="/cygdrive/c/Windows/system32/NSI.dll",symbols-loaded="0",thread-group="i\
1"
468,085 =library-loaded,id="/cygdrive/c/Windows/system32/IMM32.DLL",target-name="/cygdrive/c/Windows\
/system32/IMM32.DLL",host-name="/cygdrive/c/Windows/system32/IMM32.DLL",symbols-loaded="0",thread-gr\
oup="i1"
468,095 =library-loaded,id="/cygdrive/c/Windows/system32/MSCTF.dll",target-name="/cygdrive/c/Windows\
/system32/MSCTF.dll",host-name="/cygdrive/c/Windows/system32/MSCTF.dll",symbols-loaded="0",thread-gr\
oup="i1"
468,100 =breakpoint-modified,bkpt={number="2",type="breakpoint",disp="del",enabled="y",addr="0x00000\
00000401dc8",at="<main+8>",thread-groups=["i1"],times="1",original-location="main"}
468,100 ~"\nTemporary breakpoint "
468,100 ~"2, 0x0000000000401dc8 in main ()\n"
468,100 *stopped,reason="breakpoint-hit",disp="del",bkptno="2",frame={addr="0x0000000000401dc8",func\
="main",args=[]},thread-id="1",stopped-threads="all"
468,100 =breakpoint-deleted,id="2"
468,100 (gdb)
468,100 28^error,msg="Can not fetch data now."
468,100 (gdb)
Codefolding would be a nice feature, so that we can hide different kinds of blocks.
Add Auto activate Content Assist when characters are typed. (configurable with pref options)
Using RustDT 0.2.0.v201504232210
After creating a new rust project and pressing the "Run" or "Debug" button I get a message dialog that there is no configuration:
Unable To Launch
The selecton cannot be launched, and there are no recent launches.
Since RustDT is using cargo anyways it could just create a configuration just calling cargo run
. For "Debug" it should start a debugger.
When I manually try to create a run configuration there is the field "Program path" where I should add an existing file. I have several problems with that:
QUOTING @sbant
For the build problem
My code already built, then I type a 'space' and then 'Ctrl+s' 'Ctrl+b' to build it.
the Console display:
************ Building Rust workspace ************
------- Building Rust project: MarketData -------
Running: E:\Rust\bin\cargo.exe build
Compiling MarketData v0.0.1 (file:///Z:/MarketData)
...
compiler outputs...
^^^ Terminated, exit code: 0 ^^^
The Building Workspace window is display like:
Building all...
Invoking 'Rust builder' on '/Project'.
the Eclipse consume 100% cpu in one core, and memory usage growing at the same time.
Then other operation must wait the block disappear.
I can't even Cancel the Building Workspace.
When I clicked 'Cancel' button,
the Details display:
Building Workspace (Cancel Requested)
Building all...: Invoking 'Rust builder' on '/Project'.
What only I can do is wait...
After about one minute, then the Console display:
************ Build terminated. ************
Then the block stopped, other operation can contiune
Is there some way to configure the build output to be verbose?
==================== Starting Rust build ====================
************ Building Rust project: SPOJ ************
>> Running: C:\Program Files\Rust stable 1.1\bin\cargo.exe build
Build failed, waiting for other jobs to finish...
An unknown error occurred
To learn more, run the command again with --verbose.
^^^ Terminated, exit code: 101 ^^^
************ Build terminated. ************
Just installed the eclipse-java-luna-SR2-linux-gtk-x86_64.tar.gz and installed the dt plugin. Now whenever I press ctrl+space I get Tool exited with non-zero status 127.
A problem with autocompletion shouldn't interrupt the programmer's typing - it's fine for errors to just show in the status bar.
Use this:
https://github.com/phildawes/racer
For installation:
cd racer; cargo build --release
Set the RUST_SRC_PATH env variable to point to the 'src' dir in your rust source installation
(e.g. % export RUST_SRC_PATH=/usr/local/src/rust/src )
Test on the command line:
./target/release/racer complete std::io::B (should show some completions)
Basically, is almost the same as using dcd for DDT.
Hey, congratulations and kudos!
Could you please provided signed releases for the eclipse update site?
I've encountered the following issue (Windows-only?): instead of passing the system PATH value to cargo for building, RustDT passes two variables:
PATH=null;H:\devel\rust1.0\bin
Path=#the real stuff#
Trying to figure out what causes the bug, I arrived at the method: melnorme.lang.utils.ProcessUtils.addDirToPathEnv()
Assuming at the entry point of this method the environment variable is called "Path" and not "PATH", executing the method would result in the observed behavior. I have confirmed this as follows: I substituted racer.exe executable for an exetutable that prints the environment variables. When run by RustDT, it shows Path=#the real stuff# (and when run outside, it shows PATH as expected).
Now the puzzling part is how exactly "PATH" gets transformed into "Path" inside Eclipse. I have not been able to figure this out. Trying to reproduce it with a test Java program outside of Eclipse doesn't show this behavior (it shows PATH, not Path). Here is the program: https://gist.github.com/kirillkh/9b9d432c591712378086
Using RustDT 0.2.0, no error messages.
When I write code with errors in macros, RustDT won't highlight the macro usage in red, just the macro definition. Take e.g.
fn main() {
try!(5);
}
When saving and compiling I get this output
------- Building Rust project: test -------
>> Running: /usr/local/bin/cargo build
Compiling hello_world v0.0.1 (file:///path/to/project/projectname/src/test)
<std macros>:3:1: 3:39 error: mismatched types:
expected `_`,
found `core::result::Result<_, _>`
(expected integral variable,
found enum `core::result::Result`) [E0308]
<std macros>:3 $ crate:: result:: Result:: Ok ( val ) => val , $ crate:: result:: Result::
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<std macros>:1:1: 6:48 note: in expansion of try!
src/main.rs:2:5: 2:13 note: expansion site
<std macros>:3:1: 3:39 help: run `rustc --explain E0308` to see a detailed explanation
<std macros>:3:49: 4:12 error: mismatched types:
expected `_`,
found `core::result::Result<_, _>`
(expected integral variable,
found enum `core::result::Result`) [E0308]
<std macros>:3 $ crate:: result:: Result:: Ok ( val ) => val , $ crate:: result:: Result::
<std macros>:4 Err ( err ) => {
<std macros>:1:1: 6:48 note: in expansion of try!
src/main.rs:2:5: 2:13 note: expansion site
<std macros>:3:49: 4:12 help: run `rustc --explain E0308` to see a detailed explanation
<std macros>:5:8: 6:42 error: mismatched types:
expected `()`,
found `core::result::Result<_, _>`
(expected (),
found enum `core::result::Result`) [E0308]
<std macros>:5 return $ crate:: result:: Result:: Err (
<std macros>:6 $ crate:: convert:: From:: from ( err ) ) } } )
<std macros>:1:1: 6:48 note: in expansion of try!
src/main.rs:2:5: 2:13 note: expansion site
<std macros>:5:8: 6:42 help: run `rustc --explain E0308` to see a detailed explanation
error: aborting due to 3 previous errors
Could not compile `hello_world`.
To learn more, run the command again with --verbose.
^^^ Terminated, exit code: 101 ^^^
************ Build terminated. ************
The source code line 2 does not get highlighted.
pluginId: org.eclipse.ui.workbench.texteditor
pluginVersion: 3.9.100.v20141023-1946
code: 0
severity: 4
message: HIDDEN
fingerprint: e47e7207
Exception:java.lang.NoSuchMethodError: HIDDEN
at HIDDEN.HIDDEN(HIDDEN:-1)
at HIDDEN.HIDDEN(HIDDEN:-1)
at HIDDEN.HIDDEN(HIDDEN:-1)
at HIDDEN.HIDDEN(HIDDEN:-1)
at org.eclipse.ui.texteditor.AbstractTextEditor$19.run(AbstractTextEditor.java:3220)
at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:463)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:371)
at org.eclipse.ui.internal.WorkbenchWindow$13.run(WorkbenchWindow.java:2138)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2134)
at org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3238)
at org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3265)
at org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:366)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:313)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:888)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:869)
at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:120)
at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:337)
at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:258)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:104)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:73)
at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:55)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:128)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:983)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:662)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:766)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:737)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:731)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:715)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$1.handleEvent(PartServiceImpl.java:96)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:187)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4634)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:212)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:85)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:488)
at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:454)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:715)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:393)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1151)
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3185)
at org.eclipse.ui.internal.WorkbenchPage.access$24(WorkbenchPage.java:3100)
at org.eclipse.ui.internal.WorkbenchPage$9.run(WorkbenchPage.java:3082)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3077)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3041)
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3031)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:541)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:500)
at org.eclipse.ui.actions.OpenFileAction.openFile(OpenFileAction.java:100)
at org.eclipse.ui.actions.OpenSystemEditorAction.run(OpenSystemEditorAction.java:100)
at org.eclipse.ui.actions.RetargetAction.run(RetargetAction.java:229)
at org.eclipse.ui.navigator.CommonNavigatorManager$2.open(CommonNavigatorManager.java:191)
at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:854)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:851)
at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1168)
at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:449)
at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1275)
at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:278)
at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:272)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:313)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4480)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1413)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3818)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3428)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:648)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:592)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Make it possible to click on an entry in the buildlog to ge to the corresponding file and line.
edit
Also different colors for different log-levels would be a good thing. Currently everything is written in red, from a notice up to an error. Maybe use the same colors as rust uses them in terminal? Some green for notices, yellow for warnings and red for errors.
Hello,Bruno. I was trying to debug my rust application, after i clicked the debug button(or debug as ...), I got below error messages. (However, I can debug my c/c++ project without any issue and also i can run my rust application)
Error in services launch sequence
gdb: unrecognized option '-iex'
I checked my debugger settings, it's the same as the screen shot in the user guide.
Also could you help me understanding this note?
Note that for debugging to work, the program must be compiled with debug symbols information, and those debug symbols must be on a format that GDB understands. Otherwise you will get GDB error messages such "(no debugging symbols found)" or "file format not recognized".
I am quite new to Rust and GDB. Could you give an example on this. Thanks.
See https://github.com/rust-lang/rust/blob/master/src/etc/rust-gdb for reference.
Note: setting rust-gdb as the debugger in Eclipse won't work as a workaround, since rust-gdb is a shell script and not an executable. But putting the equivalent commands in the .gdbinit
file should work.
It would be nice to have a setting to focus Console window (and/or perhaps Problems window) on build.
It would be nice if we could import a project from a given cargo-file
An error occurred during the org.eclipse.equinox.internal.p2.engine.phases.CheckTrust phase.
session context was:(profile=SDKProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.CheckTrust, operand=, action=).
Error reading signed content.
error in opening zip file
I am using RustDT 0.2.0, same setup as in #35
When trying to auto-complete a function on a std::process::Command object I get this error message:
Unknown line format: where K: AsRef<OsStr>, V: AsRef<OsStr>
The log file is not more detailed:
!ENTRY com.github.rustdt.ide.core 4 0 2015-05-29 13:11:15.800
!MESSAGE Unknown line format: where K: AsRef<OsStr>, V: AsRef<OsStr>
Hi,
where can i find the rust lang lexer and parser implemented?
Thanks,
Hello!
I am having a problem on build:
************ Building Rust workspace ************
------- Building Rust project: krpc-rs -------
>> Running: /usr/local/bin/cargo build
Could not execute process `rustc -vV` (never executed)
Caused by:
No such file or directory (os error 2)
^^^ Terminated, exit code: 101 ^^^
************ Build terminated. ************
I think cargo
can't see rustc
, which is strange, because they are in the same directory.
Any ideas on how fix this? ๐
Currently the Cargo.{toml,lock}
are displayed as plaintext without any syntax highlighting/coloring.
Please add support for some highlighting here.
While editing code, I got this message box, and its contents are:
Unknown line format: - Could not match expr node type: ExprMac(Spanned { node: MacInvocTT(path(vec), [TtToken(Span { lo: BytePos(31), hi: BytePos(42), expn_id: ExpnId(4294967295) }, Ident(Philosopher#0, ModName)), TtToken(Span { lo: BytePos(42), hi: BytePos(44), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(44), hi: BytePos(47), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(47), hi: BytePos(65), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(47), hi: BytePos(48), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(48), hi: BytePos(64), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(65)), None))], close_span: Span { lo: BytePos(64), hi: BytePos(65), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(65), hi: BytePos(66), expn_id: ExpnId(4294967295) }, Comma), TtToken(Span { lo: BytePos(73), hi: BytePos(84), expn_id: ExpnId(4294967295) }, Ident(Philosopher#0, ModName)), TtToken(Span { lo: BytePos(84), hi: BytePos(86), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(86), hi: BytePos(89), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(89), hi: BytePos(107), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(89), hi: BytePos(90), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(90), hi: BytePos(106), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(65)), None))], close_span: Span { lo: BytePos(106), hi: BytePos(107), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(107), hi: BytePos(108), expn_id: ExpnId(4294967295) }, Comma), TtToken(Span { lo: BytePos(115), hi: BytePos(126), expn_id: ExpnId(4294967295) }, Ident(Philosopher#0, ModName)), TtToken(Span { lo: BytePos(126), hi: BytePos(128), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(128), hi: BytePos(131), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(131), hi: BytePos(144), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(131), hi: BytePos(132), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(132), hi: BytePos(143), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(66)), None))], close_span: Span { lo: BytePos(143), hi: BytePos(144), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(144), hi: BytePos(145), expn_id: ExpnId(4294967295) }, Comma), TtToken(Span { lo: BytePos(152), hi: BytePos(163), expn_id: ExpnId(4294967295) }, Ident(Philosopher#0, ModName)), TtToken(Span { lo: BytePos(163), hi: BytePos(165), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(165), hi: BytePos(168), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(168), hi: BytePos(191), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(168), hi: BytePos(169), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(169), hi: BytePos(190), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(67)), None))], close_span: Span { lo: BytePos(190), hi: BytePos(191), expn_id: ExpnId(4294967295) } }), TtToken(Span { lo: BytePos(191), hi: BytePos(192), expn_id: ExpnId(4294967295) }, Comma), TtToken(Span { lo: BytePos(199), hi: BytePos(210), expn_id: ExpnId(4294967295) }, Ident(Philosopher#0, ModName)), TtToken(Span { lo: BytePos(210), hi: BytePos(212), expn_id: ExpnId(4294967295) }, ModSep), TtToken(Span { lo: BytePos(212), hi: BytePos(215), expn_id: ExpnId(4294967295) }, Ident(new#0, Plain)), TtDelimited(Span { lo: BytePos(215), hi: BytePos(234), expn_id: ExpnId(4294967295) }, Delimited { delim: Paren, open_span: Span { lo: BytePos(215), hi: BytePos(216), expn_id: ExpnId(4294967295) }, tts: [TtToken(Span { lo: BytePos(216), hi: BytePos(233), expn_id: ExpnId(4294967295) }, Literal(Str_(" "(68)), None))], close_span: Span { lo: BytePos(233), hi: BytePos(234), expn_id: ExpnId(4294967295) } })], 0), span: Span { lo: BytePos(19), hi: BytePos(238), expn_id: ExpnId(4294967295) } }, Bracket)
The rust source contents was:
use std::thread;
struct Philosopher { name : String }
impl Philosopher {
fn new(name: &str) -> Philosopher {
Philosopher { name: name.to_string() }
}
fn eat(&self) {
println!("{} started eating.", self.name);
thread::sleep_ms(1000);
println!("{} is done eating.", self.name);
}
}
fn main()
{
let philosephers = vec![
Philosopher::new("Baruch Spinoza"),
Philosopher::new("Gilles Deleuze"),
Philosopher::new("Karl Marx"),
Philosopher::new("Friedrich Nietzsche"),
Philosopher::new("Michel Foucault")
];
let thread_handles: Vec<_> = philosephers.into_iter().
for p in &philosephers {
p.eat();
}
}
The editing was begin done on the line containing:
let thread_handles: Vec<_> = philosephers.into_iter().
The preferences page "Rust" is unclear: I don't know which directories to choose for "Directory" or "Rust 'src' Directory".
"Rust 'src' Directory" reveals (after writing a path into it) that it wants something where a directory named libcore resides. Problem: There is no such directory installed by the rust installer. There only is a libcore-4e7c5e5c.rlib file (archive) in /usr/local/lib/rustlib/x86_64-unknown-linux-gnu/lib and /usr/local/lib/rustlib/i686-unknown-linux-gnu/lib.
Also it would be quite nice to auto-search for those directories as "Java" โ "Installed JREs" does.
Using RustDT 0.2.0.v201504232210
If you checkout [email protected]:posix4e/constant-time-compare.git bring it into a project although I can f3 if I reference the module in a main.rs if I try to go to the definition from the tests, I get not found.
Currently when I attempt to configure RustDT it asks for the Rust installation directory. When I specify it, it complains that it cannot find Cargo, but I do not have a seperate box to point it to Cargo.
I'm on an Ubuntu-based distro and using a 3rd party PPA to update my rust executable - unfortunately that PPA doesn't come with Cargo which I had to get separately from a different PPA.
In other words, they're not in the same directory on my current setup, making me unable to configure RustDT without changing everything around.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.